Javascript代码输出示例
javascript output example from code
我是javascript新手,想知道代码的输出是什么:
var myObject = {
foo: "bar",
func: function() {
var self = this;
console.log("outer func: this.foo = " + this.foo);
console.log("outer func: self.foo = " + self.foo);
(function() {
console.log("inner func: this.foo = " + this.foo);
console.log("inner func: self.foo = " + self.foo);
}());
}
};
还不知道foo是怎么工作的
Javascript中的每个函数调用都会根据函数被调用的方式重置this
的值(参见this
被控制的五种方式的答案)。
因此,当您使用IIFE结构(function() { ... })()
(这只是一个普通的函数调用)时,this
的值被重置为window
对象或undefined
(如果在严格模式下运行)。
所以,如果你不是在strict
模式下运行,那么内部函数中的this.foo
引用将试图访问window.foo
,这可能是undefined
。
并且,当我在不处于严格模式的jsFiddle中运行此命令并实际调用myObject.func()
时,控制台显示:
outer func: this.foo = bar
outer func: self.foo = bar
inner func: this.foo = undefined
inner func: self.foo = bar
一个额外的console.log()
语句确认在内部函数this === window
,当然,window.foo
是undefined
。
如果您在严格模式下运行代码,那么调用myObject.func()
将生成Uncaught TypeError: Cannot read property 'foo' of undefined
错误,因为在内部函数中,this === undefined
.
相关文章:
- 无法获取输出.返回代码206.缺少值
- 将 JSP 变量输出到 JavaScript 代码段中
- 有谁知道这行代码的输出是什么?$.get(“http://192.168.4.1:80/”, {pin:p}.
- 从一个文本框执行代码,并在另一个文本框中以 HTML 显示输出
- 修改此node.js代码以输出.wav而不是.mp4
- 如何在Angular js中返回html代码作为过滤器的输出
- 如何从按钮后面的代码中调用javascript函数,点击并存储其输出,然后继续操作
- 为什么console.log()在我的代码中输出意外的0
- 当从代码后台输出Javascript时,如何处理换行符
- PHP 文件输出 javascript 代码本身而不是运行
- 从字面上看,以HTML格式输出PHP代码
- 输出代码后更改链接中的 URL
- 为什么我的 JSON 代码使用自己的输出(来自 JSON.stringify)返回“语法错误”
- 我什至无法让 $().text 正常工作.改为输出大量代码
- 从 utf-8 代码打印/输出 utf-8 字符
- 我们不能在文件中编写和执行 JavaScript 代码并在控制台中查看输出吗?
- 表中的 Javascript 输出对象有助于删除重复代码
- 在文本区域而不是 HTML 代码中显示 HTML 输出
- 为什么 JSFiddle 不输出此代码的结果
- Browserify输出代码没有't在浏览器中执行