with
with的作用就是可以给他传入一个对象,那么with中就可以访问到对象中的变量
var message = "hello world";// console.log(message);// with语句:可以形成自己的作用域var obj = { name: "zx", age: 18, message: "asd" };function foo() {function bar() {var message = "qq";with (obj) {console.log(name);}}bar();}foo();
也就是说,with()执行时传入的参数会成为with作用域的参数,可以访问。
并且with不推荐使用,因为会产生非常多的bug。
eval
eval是一个特殊的函数,它可以将传入的字符串当作JS代码来运行
var jsString = 'var message = "hello world";console.log(message);';eval(jsString);
eval也不推荐使用,因为可读性非常差,并且无法被JS引擎优化,效率比较差。
严格模式
ES5提出了严格模式(Strict Mode)的概念:
- 严格模式很好理解,是一种具有限制性的JS模式,从而使代码隐式的脱离了“懒散(sloppy)”模式
- 支持严格模式的浏览器在检测到代码中有严格模式时,会以更加严格的方式对代码进行检测和执行
严格模式对正常的JS语义进行了一些限制:
