标签:进制 函数作用域 十六 return prot 匿名函数 java 不能 rip
严格模式
除了正常的运行模式,JavaScript 还有第二种运行模式:严格模式(strict mode)。顾名思义,这种模式采用更加严格的 JavaScript 语法
同样的代码,在正常模式和严格模式中,可能会有不一样的运行结果。
一些在正常模式下可以运行的语句,在严格模式下将不能运行。
进入严格模式的标志,是一行字符串 use strict;
‘use strict‘;
<script> ‘use strict‘; console.log(‘这是严格模式‘); </script>
<script> console.log(‘这是正常模式‘); </script>
(function () { ‘use strict‘; // some code here })();
严格模式使得 JavaScript 的语法变得更严格,更多的操作会显式报错
其中有些操作,在正常模式下只会默默地失败,不会报错
‘use strict‘; var obj = {}; Object.preventExtensions(obj); obj.v = 1; // Uncaught TypeError: Cannot add property v, object is not extensible
with
语句无法在编译时就确定,某个属性到底归属哪个对象,从而影响了编译效果
eval
作用域(function () { ‘use strict‘; var x = 2; console.log(eval(‘var x = 5; x‘)) // 5 console.log(x) // 2 })()
eval
语句也使用严格模式,有两种方式
// 方式一 function f1(str){ ‘use strict‘; return eval(str); } f1(‘undeclared_variable = 1‘); // 报错 // 方式二 function f2(str){ return eval(str); } f2(‘"use strict";undeclared_variable = 1‘) // 报错
arguments
代表函数的参数。严格模式下,函数内部改变参数与arguments
的联系被切断了,两者不再存在联动关系
__x__(81)1017第十六天__ JavaScript 严格模式
标签:进制 函数作用域 十六 return prot 匿名函数 java 不能 rip
原文地址:https://www.cnblogs.com/tianxiaxuange/p/9806763.html