// "use strict"
/**
* 选择使用: 'use strict'
* 这里不用'use strict', 下面不会报错, 使用了'use strict'后,就会报错。
* */
- 变量
/**
* 变量: 初始化没有给值的变量会报错!
*
* */
var a;
console.log(a)
- 对象
/**
* 对象: 对象中不能有重复的属性, 否则报语法错误
* @type {{name: string}}
*/
// 严格模式下
// 重名会报语法错误!
const obj = {
name: 'ck',
name:'kb'
}
- 函数
/**
* 函数: 函数的参数, 不能重复, 不会报错, 但是通过变量名调用, 只能用到第二个参数
*
*/
// 严格模式下, 参数不能重复, 如果不是严格模式, 不会抛出异常, 通过参数名只能访问第二个参数。
function sum(num, num) {}
- 舍弃了eval方法: eval方法执行过程有关: 1. 先解析里面的代码, 2. 执行内部代码( 所以挺耗资源
/**
* eval()方法
*/
- eval、arguments
/**
* eval和arguments: 这两个不能声明给变量名, 否则会报错, 不能作为作为变量名称!!!!
*/
const eval = 11;
const arguments = [1, 2, 3]
// 以上在非严格模式下是可以的
- this指向
/**
* 抑制this: 在非严格模式下, 使用函数的apply和call方法时候, null、undefined会被转成全局对象
* 在严格模式下, this始终指向指定的对象。
*/
const color = 'red'
function displayColor () {
alert(this.color)
}
displayColor.call(null)
- 其他变化
/**
* 其他变化: 舍弃了with, 也去掉了8进制数据
*/