JavaScript严格模式下this指向】的更多相关文章

一般认为:严格模式下this不允许指向全局对象.是函数体是否处于严格模式! 如:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html 需要说明的是:本身指向全局的this是没有问题的. 示例代码: <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <tit…
如下代码, f() 输出的是 false,而 f2() 输出的是 true. 这是因为 f2 在严格模式下禁止 this 指向全局,所以 this 是 undefined, !this 当然是 true. <script> function f(){ console.log(!this); } function f2(){ "use strict"; console.log(!this); } f(); f2(); </script>…
分享至javascript语言精髓与编程实践 开启严格模式(”use strict"): 在全局代码的开始处加入 在eval代码的开始处加入 在函数声明代码处加入 在new Function() 所传入的body参数块开始处加入 1:在对象中声明相同的属性名 例如: var obj ={ 'name': 1, 'name': 2 }; 会抛出SyntaxError: Duplicate data property in object literal not allowed in strict m…
为了应对未来的版本,以下关键字在严格模式下禁止使用. implements interface let package private protected public static yield 示例, 以下代码浏览器将报错. "use strict"; var public = 10;…
如下代码,在严格模式下,如果删除 Object.prototype 浏览器会报错,目前 IE10 也支持 严格模式. <script> "use strict"; delete Object.prototype; </script> 运行时会报以下错误. Uncaught TypeError: Cannot delete property 'prototype' of function Object() { [native code] } at 2.strict…
Javascript 在第一行使用 "use strict" 声明严格模式. 但是在多个 js 文件合并时就需要注意了,可能你的是严格模式,但别的文件不是,就会造成错误. 为什么使用严格模式 保证代码可以运行安全. 让编译器运行速度更快. 为未来的 Javascript 做准备.…
[作用] [1]消除js语法的一些不合理.不严谨.不安全问题,减少怪异行为并保证代码运行安全 [2]提高编译器效率,增加运行速度 [使用] [1]整个脚本启用严格模式,在顶部执行:"use strict"; [2]在指定函数中执行严格模式,在函数体第一行:"use strict" [3]不支持strict模式的浏览器把"use strict"当做一个字符串语句执行,支持strict模式的浏览器将开启strict模式 [4]支持严格模式的浏览器包括…
禁止使用未声明的变量. 禁止删除变量或对象 禁止删除函数 禁止使用八进制 禁止对只读属性赋值 禁止对一个使用getter方法读取的属性进行赋值 禁止删除一个不允许删除的属性 变量名禁止使用 "arguments" 字符串 安全原因在作用域 eval() 创建的变量不能被调用…
我们知道普通函数调用,this在非严格模式下指向全局对象,在严格模式下是undefined.那箭头函数呢?我们知道,箭头函数没有自己的this,它的this是最近外层非箭头函数的this,那直接在顶层用的箭头函数的this在严格模式下是什么呢?不太好解释,我们看下代码 <body> <script type="text/javascript"> 'use strict' // x = 3 var a = { name1: 'gg', say: () =>…
arguments: ECMA5移除了实参对象(arguments),在非严格模式下函数里的arguments只是一个标识符,在严格模式下它变成了保留字.严格模式下无法使用arguments作为形参名或局部变量名也不能给它赋值 callee caller: 在ECMA5中对这两个属性的读写会产生一个类型错误.…