如何为 js 变量设置最小和最大边界?

Posted

技术标签:

【中文标题】如何为 js 变量设置最小和最大边界?【英文标题】:How to set min and max boundaries for a js variable? 【发布时间】:2016-01-05 03:13:32 【问题描述】:

我目前正在使用 vuejs 渲染分页。这是我的 algolia 数据。

我正在检查用户是否按下了上一个按钮/下一个按钮或直接输入(1、2、3 等)

    setPage: function(page) 
            if(page === 'previous') 
                // go back one page
                this.currentPage--;
                this.helper.setCurrentPage(this.currentPage).search();
             else if(page === 'next') 
                // go forward one page
                this.currentPage++;
                this.helper.setCurrentPage(this.currentPage).search();
             else 
                // change the currentPage with direct select(no prev/next button)
                this.helper.setCurrentPage(page).search();
            

            // update the currentPage
            this.currentPage = this.helper.getCurrentPage();
        

这很好用,但我只有 0 - 4 页(页面从 0 开始)。如何确保我的 currentPage var 不会出现负数或超出我拥有的最大页面数?

我想使用另一个 if 语句可能会起作用,但感觉有点草率。我正在学习 javascript 和 vue.js,所以我想知道是否有更好的方法。

【问题讨论】:

if (page < MIN || page > MAX) throw new Error("That page does not exist!") 取决于想要的行为...您是否希望它在结束时循环到开始?还是隐藏按钮?无论哪种方式都需要与某处可用的总数进行比较,而这并未在问题中显示 【参考方案1】:

创建类似于属性的方法:

function nextPage(pageParam)
    if (page > MAX) 
        // Disable next btn enable prev btn
     else  
        // advance page 
    
 

function prevPage(pageParam)
    if (page =< 0 ) 
        // Disable prev btn enable next btn
     else  
        // go back a page 
    

 

无论你在哪里调用 decrimentor (this.currentPage--),你都会调用 prevPage。这使您可以集中管理行为。例如,如果您决定希望它在最后一页上点击下一页时进行轮播,它将转到第一页,您可以在一个地方实现它。

【讨论】:

谢谢我喜欢这种方法。非常干净地将所有杂乱的代码隐藏在其他函数中,并保持整个代码的可读性。感谢您花时间阅读我的问题!

以上是关于如何为 js 变量设置最小和最大边界?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 API 集成传递 jS 变量?

如何为 NSPersistentContainer 和 NSPersistentCloudKitContainer 创建同名但根据版本设置的变量?

如何为反应应用程序设置环境变量?

如何为运行脚本设置自定义环境变量

如何为 OSX Mountain Lion 上的应用程序设置环境变量?

如何为 rspec 设置 ENV 变量?