相关疑难解决方法(0)

在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 ×1

syntactic-sugar ×1

syntax ×1