相关疑难解决方法(0)

JavaScript中的++ i和i ++有什么区别

在我学习和改进我的JavaScript的过程中,我遇到了一个带有switch/case语句的脚本,我注意到一些变量在++之前使用带有变量的++递增,然后一些变量在变量之后有++.这些有什么区别?这是我试图解释m和y变量的一个例子.

 switch(f){
        case 0:{

            ++m;
            if(m==12){
                m=0;
                y++;
            }
            break;
        }
        case 1:{

            --m;
            if(m==-1){
                m=11;
                y--;
            }
            break;
        }
        case 2:{

            ++y;
            break;
        }
        case 3:{

            --y;
            break;
        }
        case 4:{

            break;
        }
        }
Run Code Online (Sandbox Code Playgroud)

javascript

14
推荐指数
2
解决办法
9464
查看次数

在JavaScript中使用块的返回值

在我测试过的很多浏览器中,JavaScript块实际上返回了一个值.您可以在任何控制台中测试它:

for(var i = 0; i < 10; i++) {
    var sqrt = Math.sqrt(i);
    if(Math.floor(sqrt) === sqrt) {
        i;
    }
}
Run Code Online (Sandbox Code Playgroud)

"返回"值是最后一个方格数,即9!但是因为它不是我想的表达,你不能这样做:

for(var i = 0; i < 10; i++) {
    ...
} + 5
Run Code Online (Sandbox Code Playgroud)

这不起作用.它给出了+ 5,5当然,因为它是一个单独的陈述.将循环放在括号中显然会失败,如果一个块在括号中(例如({f(); r})- 不起作用),则将其视为对象并抛出语法错误.

利用返回值的一种方法是使用eval:

eval('for(var i = 0; i < 10; i++) {var sqrt = Math.sqrt(i);if(Math.floor(sqrt) === sqrt) {i;}}') + 5; // 14
Run Code Online (Sandbox Code Playgroud)

但我显然不会想要使用它,如果eval是唯一的解决方案.有没有办法在不使用eval我丢失的情况下使用块的结果值?我真的很喜欢这个功能:)

javascript syntax syntactic-sugar

14
推荐指数
2
解决办法
3185
查看次数

标签 统计

javascript ×2

syntactic-sugar ×1

syntax ×1