javaScript中的严格模式 (译)
“use strict”状态指示浏览器使用严格模式,是javaScript中一个相对少且安全的特征集。
特征列表(非完全列举)
- 不允许定义全局变量。(捕获没有用var声明的变量和变量名的拼写错误)
- 在严格模式下引起静默失败的声明将会抛出异常(声明 NaN = 5)
- 试图删除不能删除的属性将会抛出异常(delete object . prototype)
- 在一个对象中的所有属性名要唯一(var x = {x1 : “1”, x1 : “2”})
- 函数的参数名必须唯一(function sum(x, x){…})
- 禁止使用八进制数字语法(var x = 023; 一些开发者错误的认为前面的0不会改变数字)
- 禁止使用with关键字
- eval在严格模式中不引入新的变量
- 禁止删除声明变量(delete x)
- 禁止以任何形式对eval和arguments进行绑定或赋值
- 严格模式不会将arguments对象的值同步给形参。(例如,在函数sum(a, b) { return arguments[0] + b},这个写法是因为arguments[0]就绑定到了a上,等等。在正常模式下,对于第一个参数是arg的函数,对arg赋值会同时赋值给arguments[0],反之亦然(除非没有参数,或者arguments[0]被删除)。严格模式下,函数的arguments对象会保存函数被调用时的原始参数。Arguments[i]的值不会随之与之相应的参数的值的改变而变化,同名参数的值也不会随与之相应的arguments[i]的值的改变而变化。
- 不再支持arguments.callee。
译自:http://stackoverflow.com/questions/1335851/what-does-use-strict-do-in-javascript-and-what-is-the-reasoning-behind-it & answerd by gprasant
更详细的说明在MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Strict_mode
相关链接:https://tc39.github.io/ecma262/#sec-strict-mode-of-ecmascript
http://yanhaijing.com/es5/#about
javaScript中的严格模式 (译)的更多相关文章
- 理解javascript中的策略模式
理解javascript中的策略模式 策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换. 使用策略模式的优点如下: 优点:1. 策略模式利用组合,委托等技术和思想,有效 ...
- 浅谈 JavaScript 中的继承模式
最近在读一本设计模式的书,书中的开头部分就讲了一下 JavaScript 中的继承,阅读之后写下了这篇博客作为笔记.毕竟好记性不如烂笔头. JavaScript 是一门面向对象的语言,但是 ES6 之 ...
- 理解javascript中的原型模式
一.为什么要用原型模式. 早期采用工厂模式或构造函数模式的缺点: 1.工厂模式:函数creatPerson根据接受的参数来构建一个包含所有必要信息的person对象,这个函数可以被无数次的调用,工厂 ...
- 浅谈JavaScript中的原型模式
在JavaScript中创建对象由很多种方式,如工厂模式.构造函数模式.原型模式等: <pre name="code" class="html">/ ...
- javaScript中的闭包原理 (译)
这篇文章通过javaScript代码解释了闭包的原理,来让编程人员理解闭包.它不是写给大牛或使用功能性语言进行编程的程序员的.一旦意会了其核心概念,闭包理解起来并不难.然而,你不可能通过阅读任何有关闭 ...
- 【JS】336- 拆解 JavaScript 中的异步模式
点击上方"前端自习课"关注,学习起来~ JavaScript 中有很多种异步编程的方式.callback.promise.generator.async await 甚至 RxJS ...
- 【JS】285- 拆解 JavaScript 中的异步模式
JavaScript 中有很多种异步编程的方式.callback.promise.generator.async await 甚至 RxJS.我最初接触不同的异步模式时,曾想当然的觉得 promise ...
- javascript中的Strict模式
目录 简介 使用Strict mode strict mode的新特性 强制抛出异常 简化变量的使用 简化arguments 让javascript变得更加安全 保留关键字和function的位置 总 ...
- Javascript 中的严格模式
原文:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html 一.概述 除了正常运行模式,ECMAscript 5添加了第 ...
随机推荐
- UIButton设置为圆形按钮并增加边框
设置按钮的长和宽尺寸一致(即为正方形),然后将圆角半径设为边长的一半,即形成一个圆形 UIButton *btn = [UIButton buttonWithType:UIButtonTypeSyst ...
- 启动jmeter报错
启动jmeter.bat时报错
- nginx: error while loading shared libraries: libGeoIP.so.1
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP.tar.gz wget http://geolite.maxmind.com/do ...
- [Codeforces 877E] Danil and a Part-time Job
[题目链接] https://codeforces.com/contest/877/problem/E [算法] 首先求出这棵树的DFS序 一棵子树的DFS序为连续的一段 , 根据这个性质 , 用线段 ...
- bzoj 3489 A simple rmq problem——主席树套线段树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3489 题解:http://www.itdaan.com/blog/2017/11/24/9b ...
- 19.break和continue
break;语句: 1.可以在switch语句中,结束分支语句: 2.break:语句可以出现在单循环当中,默认情况下结束距离他最近的一个循环. 3.break 后面跟一个循环的名字可以结束你指定的这 ...
- tomcat 的一些知识
常见web服务器 1. WebLogic 支持J2EE规范2. WebSphere 支持J2EE3. Tomcat 支持JSP,servlet规范 需要配置JDK才能运行 tomcat JAVA_HO ...
- 1.4-1.5 HBase部署及基本使用
一.部署 1.准备 ##先用Apache hadoop ##之前的cdh 服务器先全部停掉 ##解压HBASE [root@hadoop-senior hbase]# tar zxf hbase-0. ...
- 【Hadoop】MapReduce笔记(一):MapReduce作业运行过程、任务执行
一.MR作业运行过程 JobClient的runJob()方法:新建JobClient实例,并调用其submitJob()方法.提交作业后,runJob()每秒轮询作业进度,如果发现上次上报后信息有改 ...
- 20个Flutter实例视频教程-第03节: 不规则底部工具栏制作-1
第03节: 不规则底部工具栏制作-1 博客地址: https://jspang.com/post/flutterDemo.html#toc-973 视频地址: https://www.bilibili ...