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" ...
随机推荐
- Pyinstaller如何将资源文件一起打包至exe中
基本原理:Pyinstaller 可以将资源文件一起bundle到exe中,当exe在运行时,会生成一个临时文件夹,程序可通过sys._MEIPASS访问临时文件夹中的资源 官方说明:https:// ...
- Centos 7.6配置nginx反向代理,直接yum安装
一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76 nginx负载均衡器 192.168.2.82 web ...
- 前端入门5-CSS弹性布局flex
本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 声明 本系列文章内容全部梳理自以下四个来源: <HTML5权威指南> <JavaScript权威指南> MD ...
- 前端入门2-HTML标签
本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 声明 本系列文章内容全部梳理自以下四个来源: <HTML5权威指南> <JavaScript权威指南> MD ...
- jQuery效果之封装模拟placeholder效果,让低版本浏览器也支持
页面中的输入框默认的提示文字一般使用placeholder属性就可以了,即: <input type="text" name="username" pla ...
- 【代码笔记】Web-JavaScript-javascript while循环
一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- JMeter 配置元件之随机变量(RandomVariable)介绍
配置元件之随机变量(Random Variable)介绍 by:授客 QQ:1033553122 测试环境 apache-jmeter-3.2 1. 计数器简介 允许用户创建一个在线程组范围之内都 ...
- Python函数式编程(一):高级函数
首先有一个高级函数的知识. 一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数. def add(x, y, f): return f(x) + f(y) 当我们调用add(-, , abs ...
- 使用Visual Studio Team Services持续集成(四)——使用构建运行测试
使用Visual Studio Team Services持续集成(四)--使用构建运行测试 使用构建来运行测试来验证集成是一个很好的实践. MyHealth.API.IntegrationTests ...
- weblogic的web.xml报错----Malformed UTF-8 char -- is an XML encoding declaration missing
weblogic报错: Malformed UTF-8 char -- is an XML encoding declaration missing 把编码修改成utf8,上传到weblogic就报这 ...