膳绫擎的代码将输出以下内容到控制台:
在外部函数中, this 和self 两者都指向了 myObject,是以两者都可以精确地引用和拜访 foo。
在内部函数中, this 不再指向 myObject。其结不雅是,this.foo 没有在内部函数中被定义,相反,指向到本地的变量self 保持在范围内,并且可以拜访。 (在ECMA 5之前,在内部函数中的this 将指向全局的 window 对象;反之,因为作为ECMA 5,内部函数中的功能this 是不决义的。)
- outer func: this.foo = bar outer func: self.foo = bar inner func: this.foo = undefined inner func: self.foo = bar
4.封装JavaScript源文件的全部内容到一个函数块有什么意义及来由?
此外, NaN 和任何器械比较——甚至是它本身本身!——结不雅是false:
这是一个越来越广泛的做法,被很多风行的JavaScript库(jQuery,Node.js等)采取。这种技巧创建了一个环绕文件全部内容的闭包,也许是最重要的是,创建了一个私有的定名空间,大年夜而有助于避免不合JavaScript模块和库之间潜在的名称冲突。
5.在JavaScript源文件的开首包含 use strict 有什么意义和好处?
对于这个问题,既扼要又最重要的谜底是,use strict 是一种在JavaScript代码运行时主动实施更严格解析和缺点处理的办法。那些被忽视或默默掉败了的代码缺点,会产生缺点或抛出异常。平日而言,这是一个很好的做法。
严格模式的一些重要长处包含:
- 使调试加倍轻易。那些被忽视或默默掉败了的代码缺点,会产生缺点或抛出异常,是以尽早提示你代码中的问题,你才能更快地指引到它们的源代码。
- 防止不测的全局变量。如不雅没有严格模式,将值分派给一个未声明的变量会主动创建该名称的全局变量。这是JavaScript中最常见的缺点之一。在严格模式下,如许做的话会抛掉足误。
- 清除 this 强迫。如不雅没有严格模式,引用null或不决义的值到 this 值会主动强迫到全局变量。这可能会导致很多令人头痛的问题和让人恨不得拔本身头发的bug。在严格模式下,引用 null或不决义的 this 值会抛掉足误。
- 不许可反复的属性名称或参数值。当检测到对象(例如,var object = {foo: "bar", foo: "baz"};)中反复定名的属性,或检测到函数中(例如,function foo(val1, val2, val1){})反复定名的参数时,严格模式会抛掉足误,是以捕获几乎可以肯定是代码中的bug可以避免浪费大年夜量的跟踪时光。
- 使eval() 更安然。在严格模式和非严格模式下,eval() 的行动方法有所不合。最显而易见的是,在严格模式下,变量和声明在 eval() 语句内部的函数不会在包含范围内创建(它们会在非严格模式下的包含范围中被创建,这也是一个常见的问题源)。
- 在 delete应用无效时抛掉足误。delete操作符(用于大年夜对象中删除属性)不克不及用在对象弗成设备的属性上。当试图删除一个弗成设备的属性时,非严格代码将默默地掉败,而严格模式将在如许的情况下抛出异常。
6.推敲以下两个函数。它们会返回雷同的器械吗? 为什么雷同或为什么不雷同?
推荐阅读 51CTO诚邀您9月23号和秒拍/国美/美团元专家一路聊智能CDN的优化之路,抓紧时光哦!
智能科技的出现、大年夜数据风口的到来、生物辨认技巧的广泛应用都在开端影响我们的生活,并开启了一个&>>>详细阅读 地址:http://www.17bianji.com/lsqh/37446.html 1/2 1

网友点评
精彩导读
科技快报
品牌展示