Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript只运行最后一个函数_Javascript - Fatal编程技术网

JavaScript只运行最后一个函数

JavaScript只运行最后一个函数,javascript,Javascript,我有以下测试代码: 编辑: var getIt = function () { return this.x; }; var obj1 = { get : getIt, x : 11 }; var obj2 = { get : getIt, x : 12 }; obj1.get(); obj2.get(); obj1.get(); 当我运行这段代码时,只有最后一个函数返回值11。因此,我看到的不是三个值,而是最后一个值。如果我删除最后一行,我只看到

我有以下测试代码: 编辑:

 var getIt = function () {
      return this.x;  
    };

var obj1 = {
  get : getIt,
  x : 11
};

var obj2 = {
  get : getIt,
  x : 12
};

obj1.get();
obj2.get();
obj1.get();

当我运行这段代码时,只有最后一个函数返回值11。因此,我看到的不是三个值,而是最后一个值。如果我删除最后一行,我只看到12这是为什么?

我相信您正在控制台中运行此代码,否则您将看不到任何值。控制台的默认行为是显示最新表达式的结果

如果要记录所有值,可以使用
console.log
显式记录单个表达式

console.log(obj1.get());
console.log(obj2.get());
obj1.get();

请注意,您的代码没有按原样运行,但我假设它运行了,因为您没有提到任何错误。

我相信您正在控制台中运行此代码,否则您将看不到任何值。控制台的默认行为是显示最新表达式的结果

如果要记录所有值,可以使用
console.log
显式记录单个表达式

console.log(obj1.get());
console.log(obj2.get());
obj1.get();

请注意,您的代码没有按原样运行,但我假设它运行了,因为您没有提到任何错误。

这是因为您在
obj2
中指定了
getIt
,因此第一次调用
obj1
将导致错误

未捕获引用错误:未定义getIt

您应该将
getIt
移动到顶部

var getIt=function(){
归还这个.x;
};
变量obj1={
得到:得到,
x:11
};
变量obj2={
得到:得到,
x:12
};
警报(obj1.get());
警报(obj2.get());

警报(obj1.get())这是因为您在
obj2
中指定了
getIt
,因此第一次调用
obj1
将导致错误

未捕获引用错误:未定义getIt

您应该将
getIt
移动到顶部

var getIt=function(){
归还这个.x;
};
变量obj1={
得到:得到,
x:11
};
变量obj2={
得到:得到,
x:12
};
警报(obj1.get());
警报(obj2.get());


警报(obj1.get())
当您运行此精确代码时,您应该会收到一个错误此代码无法工作,obj1的
getIt
未定义调用obj.get()需要一个函数,但obj.get未定义。当您运行此精确代码时,您应该会收到一个错误此代码无法工作,obj1的
getIt
未定义调用obj.get()需要一个函数,但是obj.get是未定义的。这不是OP描述的行为。他确实声明
obj1.get()
返回
11
。只需假设发布的代码不完整。他返回11,因为他运行了两次
obj1.get()
:第一次在
obj2.get()
之前,并且
getIt
未定义的
;第二次在
obj2.get()
so
getIt
之后,已经有了
函数
。一旦出现错误,执行就会停止,因此代码不会超过
obj1.get()
。我编辑了代码,但它只显示最后一行。我想这是因为online compiler.plalx,实际上初始代码并没有“超过
obj1.get()
”。你没试着跑吗?此外,我猜作者以某种奇怪的方式运行代码,因为结果没有输出。这不是OP描述的行为。他确实声明
obj1.get()
返回
11
。只需假设发布的代码不完整。他返回11,因为他运行了两次
obj1.get()
:第一次在
obj2.get()
之前,并且
getIt
未定义的
;第二次在
obj2.get()
so
getIt
之后,已经有了
函数
。一旦出现错误,执行就会停止,因此代码不会超过
obj1.get()
。我编辑了代码,但它只显示最后一行。我想这是因为online compiler.plalx,实际上初始代码并没有“超过
obj1.get()
”。你没试着跑吗?此外,我猜作者以某种奇怪的方式运行代码,因为结果没有输出。你是对的。我只是使用在线js编译器。我需要重新加载才能看到problem@ovod在线口译员的行为可能与控制台不同,因此我所说的可能不起作用,但您可以使用
alert
而不是
console.log
<代码>“我需要重新加载它才能看到问题”
。。。你的意思是它抱怨
getIt
未定义?如果是这种情况,只需在代码中的任意位置使用函数声明语法定义它
function getIt(){return this.x;}
@ovod在浏览器中按F12,然后使用该控制台;)结果是一样的-它只显示最后一个返回值)@ovod Yes,但使用我随
console.log提供的代码。它将展示所有这些,你是对的。我只是使用在线js编译器。我需要重新加载才能看到problem@ovod在线口译员的行为可能与控制台不同,因此我所说的可能不起作用,但您可以使用
alert
而不是
console.log
<代码>“我需要重新加载它才能看到问题”
。。。你的意思是它抱怨
getIt
未定义?如果是这种情况,只需在代码中的任意位置使用函数声明语法定义它
function getIt(){return this.x;}
@ovod在浏览器中按F12,然后使用该控制台;)结果是一样的-它只显示最后一个返回值)@ovod Yes,但使用我随
console.log提供的代码。它将显示所有这些。