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语义进行了一些限制: