with/eval/严格模式
1:with:简单点来说就是明确了查找域
1 var mood = 'happy' 2 var obj = { 3 name: 'tyy', 4 age: 18 5 } 6 with(obj) { 7 name = 'taosifan' 8 age = 40 9 } 10 console.log(obj);

2:eval函数
可以把传入的字符串当做JS代码来运行
举个例子
1 var evalString = 'var age=18;console.log(age);' 2 eval(evalString)

但是一般不使用,因为有很多缺点
1:代码可读性不好
2:在执行过程中可以别修改,容易遭到攻击
3:必须经过解释器,不能被JS引擎优化
3:严格模式
使用方式:在JS文件或者函数里面加上"use strict"
限制:设置严格模式会对JS代码有很多限制
1:禁止意外创建全局变量
2:不允许函数有相同的参数名称
3:静默错误(true.foo=name 或者NAN=123)

4:不允许使用原先的八进制格式 现在新规定的八进制(0o)十六进制(0x)二进制(0b)可以写
5:with语句不允许使用
6:eval函数不会向上引用变量 不给上一层作用域引用变量
7:在严格模式下,自执行函数(默认绑定)会指向undefined
一般不用用this取window 直接用window或者localStorage
1 "use strict" 2 3 function foo() { 4 console.log(this); 5 } 6 foo()

不使用严格模式的话打印的是window
8.seTimeout(是个黑盒子)严格模式下正常函数格式写或者箭头函数都是window

浙公网安备 33010602011771号