<!DOCTYPE html>
<html>
<body>
<script>
function useStrict(){
"use strict";
}
"use strict";
foo=10;
alert(foo);
</script>
</body>
</html>
导致没有错误。结论:严格模式未激活。但是如果我删除了函数定义:
<!DOCTYPE html>
<html>
<body>
<script>
"use strict";
foo=10;
alert(foo);
</script>
</body>
</html>
我收到错误。结论:激活严格模式。但是如果我删除全局上下文中的"use strict"
行并保留函数:
<!DOCTYPE html>
<html>
<body>
<script>
function useStrict(){
"use strict";
}
foo=10;
alert(foo);
</script>
</body>
</html>
我没有错误。结论:严格模式未激活。这是怎么回事?
似乎当"use strict";
同时处于全局上下文和函数中时,它们会被取消,因为当我删除该函数时,确实激活了严格模式。但是,如果在全局上下文中没有"use strict";
行,但在函数内部,则不会激活严格模式,这对我来说是意料之外的。如果函数调用中的"use strict";
本身没有激活严格模式,它们怎么能取消呢?
答案 0 :(得分:1)
您的第一个脚本,用于上下文:
function useStrict() {
"use strict";
}
"use strict";
foo = 10;
alert(foo);
"use strict"
仅在脚本顶部生效。它之前的function useStrict()
使它不在顶部。如果将它移到顶部,它将起作用。
"use strict";
function useStrict() {
"use strict";
}
foo = 10;
alert(foo);
否则它与"use mayonnaise"
具有相同的语义。