JavaScript 严格模式(use strict)
"use strict" 的目的是指定代码在严格条件下执行。
严格模式下你不能使用未声明的变量。
一、一个简单的实例
<h1>使用 "use strict":</h1> <h3>不允许使用未定义的变量。</h3> <p>浏览器按下 F12 开启调试模式,查看报错信息。</p> <script> "use strict"; x = 3.14; // 报错 (x 未定义) </script>
===注意点。这个“use struct”也是由作用域的,如果在函数内部声明的话 (只在函数内使用严格模式)
===为什么使用严格模式:
- 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
- 消除代码运行的一些不安全之处,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 为未来新版本的Javascript做好铺垫。
====不允许删除变量或对象不允许删除函数不允许变量重名不允许使用八进制不允许使用转义字符:
<h1>使用 "use strict":</h1> <h3>不允许删除变量或对象。</h3> <p>浏览器按下 F12 开启调试模式,查看报错信息。</p> <script> "use strict"; var x = 3.14; delete x; </script>
===不允许对只读属性赋值
<h1>使用 "use strict":</h1> <h3>不允许对只读属性赋值。</h3> <p>浏览器按下 F12 开启调试模式,查看报错信息。</p> <script> "use strict"; var obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // 报错 </script>
保留关键字
为了向将来Javascript的新版本过渡,严格模式新增了一些保留关键字
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
==注意:"use strict" 指令只允许出现在脚本或函数的开头
小知识点:
①switch括号中的东西和case 前面的东西 的比较是 (===)进行比较的
②
③对象可以使用名字来作为索引