ES5-ES6-ES7_严格模式
运行模式
正常(混杂)模式与严格模式,除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(strict mode)
顾名思义,这种模式使得Javascript在更严格的语法条件下运行
严格模式的目的/作用
1. 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为
2. 消除代码运行的一些不安全之处,为代码的安全运行保驾护航
3. 为未来新版本的Javascript做好铺垫
严格模式的使用
在全局或函数的第一条语句定义为: 'use strict';
如果浏览器不支持, 只解析为一条简单的语句, 没有任何副作用
语法和行为改变
必须用var声明变量,正常模式下一个变量可以不使用var或者let来声明,这样变量会自动提升到window对象下,执行不报错,但加了严格模式的时候就会报错了
ussernam = 232;
console.log(ussernam)
禁止自定义的函数中的this指向window
function Person(age, name) {
this.age = age
this.name = name
}
// 使用的时候要使用new,这之后this才会指向实例对象,不new直接调用的时候this指向的是window
// 非严格模式下不会报错,严格模式下就会报错了
Person(32, 'huang')
创建eval作用域,加了严格模式的话eval有自己的作用域,里面创建的对象只属于eval里面的作用域
var str = "NBA"
// eval方法可以解析字符串里的js代码
// 不使用严格模式的话eval没有自己的作用域 ,如果里面的字符串是请求回来的数据,里面有重名的变量这样就会很不安全,会污染自己定义的全局变量
// eval里面写的变量相当于在全局执行
eval('var str = "CBA"; alert(str)');
alert(str) // 结果还是CBA
对象不能有重名的属性
// 在正常模式下,对象的属性有重名不会报错
// 在严格模式下,对象的属性有重名会报错
var obj = {
userName: 'ff',
userName: 'ff'
}
ES5-ES6-ES7_严格模式的更多相关文章
- ES6中的类继承和ES5中的继承模式详解
1.ES5中的继承模式 我们先看ES5中的继承. 既然要实现继承,首先我们得要有一个父类. Animal.prototype.eat = function(food) { console.log(th ...
- Atitit js版本es5 es6新特性
Atitit js版本es5 es6新特性 Es5( es5 其实就是adobe action script的标准化)1 es6新特性1 Es5( es5 其实就是adobe action scrip ...
- 简述ES5 ES6
很久前的某一天,一位大神问我,你知道ES6相对于ES5有什么改进吗? 我一脸懵逼的反问,那个啥,啥是ES5.ES6啊. 不得不承认与大神之间的差距,回来深思了这个问题,结合以前的知识,算是有了点眉目. ...
- React/React Native的 ES5 ES6 写法对照
ES5 ES6 模块 var React = require("react-native); var { Image, Text, View } = React; import Re ...
- Atitit js es5 es6新特性 attilax总结
Atitit js es5 es6新特性 attilax总结 1.1. JavaScript发展时间轴:1 1.2. 以下是ES6排名前十的最佳特性列表(排名不分先后):1 1.3. Es6 支持情况 ...
- 【转】React Native中ES5 ES6写法对照
很多React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends React.Component),然而网上搜到的很多教程和例子都是 ...
- 【ES5 ES6】使用学习
[ES5 ES6]使用学习 转载: ============================================================= 1.Promise 2.下划线转驼峰,驼 ...
- JavaScript Learning Paths(ES5/ES6/ES-Next)
JavaScript Learning Paths(ES5/ES6/ES-Next) JavaScript Expert refs https://developer.mozilla.org/en-U ...
- ES5 & ES6 基础
一.什么是ES5 附上一览表 (5.1中文 (2011.6)): http://lzw.me/pages/ecmascript/ (5.1英文PDF):http://www.ecma-internat ...
- React Native 的ES5 ES6写法对照表
模块 引用 在ES5里,如果使用CommonJS标准,引入React包基本通过require进行,代码类似这样: //ES5 var React = require("react" ...
随机推荐
- Java_HashMap使用思路
一.HashMap的应用思路 使用: Map,Set集合,String的split切割方法 ,增强for循环 使用思路:为所有key创建容器,之后容器中存放对应value 二.实现示例代码 1.两个 ...
- Java学习笔记之——单例模式
(1)懒汉式:对象在方法中,第一次调用时创建对象,线程不安全的 public class Singleton { //外部不可以创建对象,就要在内部创建一个对象,还能够在外部获取 private ...
- python基础学习(八)元组
元组的定义 Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改 元组 表示多个元素组成的序列 元组 在 Python 开发中,有特定的应用场景 用于存储 一串 信息,数据 之间使用 , 分 ...
- C#反射、方法调用、自动调用方法、根据按钮名称调用方法、C#按钮权限管理
根据按钮名称,直接调用方法,适用于用户对按钮的操作权限管理. /// <summary> /// 菜单按钮点击事件 /// </summary> void usrMenu1_U ...
- js 实现二级联动
onchange 事件 <body> <select id="province" onchange="func1()"> <opt ...
- DOCTYPE声明作用?标准模式与兼容模式?
<!DOCTYPE>文档声明是用来告诉浏览器使用哪种DTD,一般放在(X)HTML文档开头声明,用以告诉其他人这个文档的类型风格:DTD(文档类型定义)是一组机器可读的规则,它们指示(X) ...
- 服务器端使用jstat定位GC问题的有关命令
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量. 命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 注意!!! ...
- JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程
JNI/NDK Java调用C/C++前言 通过第三篇文章讲解在实际的开发过程中Java层调用C/C++层的处理流程.其实我们在很大的业务里也需要C/C+ +层去调用Java层,这两层之间的相互调用 ...
- 我喜欢 Google Flutter
在 Google I/O ’17 上,Google 向我们介绍了 Flutter —— 一款新的用于创建移动应用的开源库. 正如你所想的那样,Flutter 是能够帮助创建拥有漂亮 UI 界面的跨平台 ...
- Flutter Plugin开发流程
这篇文章主要介绍了Flutter Plugin开发流程,包括如何利用Android Studio开发以及发布等. 本文主要给大家介绍如何开发Flutter Plugin中Android的部分.有关Fl ...