'use strict';

function foo() {
    var sum = 0;
    for (let i=0; i<100; i++) {
        sum += i;
    }
}

为何这样子使用也不行?也会报:SyntaxError 我有点看不懂了 ~~~

没有返回吧

我觉得啊

#3 Created at ... [Delete] [Delete and Lock User]

确实奇怪,不是没有返回值的问题。为什么?

mia_lovecat

#4 Created at ... [Delete] [Delete and Lock User]

SyntaxError: let is a reserved identifier 是浏览器还不支持吧。

梦_轩昂

#5 Created at ... [Delete] [Delete and Lock User]

刚刚试了下,浏览器应该是支持let了,但是还报以下错误

Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

廖雪峰

#6 Created at ... [Delete] [Delete and Lock User]

不要忘了use strict;

你这个代码我试过了,没有问题,可以运行 浏览器版本:Google Chrome 45.0.2454.99 m

可以成功在<script> ...</script>标签里执行那段代码,但是在console中,得在块内,let之前用'use strict';

function foo(){ 'use strict'; let a = 0; console.log(a); } foo();

才成功在console中运行。

BlueSky305

#9 Created at ... [Delete] [Delete and Lock User]

测试了下, 接楼上, 其实应该是函数顶部, 而不是块之前

function foo() {
        'use strict';
    var sum = 0;

    for (let i=0; i<100; i++) {
        sum += i;
    }
    alert(sum);
}
foo();

正好也遇到这个问题,谢谢指出!


  • 1

Reply