严格模式下有如下注意点
一: 全局this的用法
function Foo(){'use strict'console.log(this.location);
}
Foo()
如上代码this.location会打印typeError
因为this都是undefined,再调用就直接报错了。
可以使用window.location,可以获取到当前url的详细信息
特殊情况:
setTimeout(function () { this.name = "hello"; });
无论严格模式还是非严格模式,浏览器环境下setTimeout内的this永远指向window,执行结果是 window上挂了一个属性window.name,这个值会一直存在,造成内存泄漏。
二:旧版本的处理
use strict是JS的严格模式的标示,在 JavaScript 旧版本中会被忽略