Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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 为什么在‘var y=1,x=y=typeof x;’的结果中x等于1?(铬)_Javascript_Google Chrome - Fatal编程技术网

Javascript 为什么在‘var y=1,x=y=typeof x;’的结果中x等于1?(铬)

Javascript 为什么在‘var y=1,x=y=typeof x;’的结果中x等于1?(铬),javascript,google-chrome,Javascript,Google Chrome,无法理解为什么在Google Chrome控制台版本65.0.3325.181官方版本64位中,x不等于未定义的代码 变量y=1,x=y=x的类型; x; 为什么在变量y=1,x=y=typeof x的结果中x等于1 它不是,它是未定义的字符串。我猜你是想问为什么在代码运行之后x不等于1。编辑:嗯,或者不,因为您无法理解为什么x在表达式中不等于未定义 原因是该准则实际上是这样的: var y, x; y = 1; x = y = typeof x; 所以 声明未定义的y和x,这两个值都获得其

无法理解为什么在Google Chrome控制台版本65.0.3325.181官方版本64位中,x不等于未定义的代码

变量y=1,x=y=x的类型; x; 为什么在变量y=1,x=y=typeof x的结果中x等于1

它不是,它是未定义的字符串。我猜你是想问为什么在代码运行之后x不等于1。编辑:嗯,或者不,因为您无法理解为什么x在表达式中不等于未定义

原因是该准则实际上是这样的:

var y, x;
y = 1;
x = y = typeof x;
所以

声明未定义的y和x,这两个值都获得其默认值。 将1赋值给y。 将x的类型指定给y。因为x包含未定义的,所以x的类型是未定义的。 将刚刚分配给y的值未定义为x。
在最后一步中,x接收未定义而不是1的原因是复合赋值x=y=typeof x是从右向左处理的。这就是为什么y在上面的步骤3中得到一个新值,只有在这之后,该值才会在步骤4中复制到x。

您使用什么浏览器?x对于mex是未定义的,为什么在变量y=1,x=y=typeof x的结果中x等于1;?没有,x和y都包含未定义的字符串。堆栈溢出是一个非常活跃的地方,即使是在周末,在你发布一个问题或答案后,停留几分钟回答上面Andrei的问题。@t.J.Crowder抱歉,伙计们,提供了错误的示例。我自己也讨厌这个。添加了浏览器版本并修复了一个示例添加了一些注释。对于错误的示例,很抱歉。尝试在第一个x之后没有空格;并加x;下一行。@Rantiev:请参阅。空格在JS中很少有意义,当然不是在上面的x之后;继续下一行,有一个string@Rantiev:再次查看答案。字符串中未定义x的值。如果您在var语句之后谈论undefined,那是因为var没有返回值,所以控制台为它显示undefined。但是你的标题说x是1,这与你展示的代码没有任何关系。