gpt4 book ai didi

Javascript 三元运算符和赋值

转载 作者:行者123 更新时间:2023-12-02 09:20:54 24 4
gpt4 key购买 nike

这个简单的 JavaScript 赋值语句得到了意想不到的结果:

var t = 1 == 1 ? 1 : 0;
undefined

我本来希望将 1 分配给 t。如果这样做,结果相同

var t = (1 == 1 ? 1 : 0);
undefined

有人可以解释一下为什么这不能按预期工作吗?

最佳答案

评估 var t = 1 == 1 的结果? 1 : 0; 例如,Firebug 控制台将是未定义。但是,t 的值将按预期为 1。尝试在赋值后输出 t

当变量声明位于单独的行上时,Firebug 打印结果:

var t;
t = 1 == 1 ? 1 : 0;

这是因为赋值操作的返回值就是被赋值的值。但是,当存在 var 关键字时,返回的是 VariableStatement 声明的值,其行为如下:

The production VariableStatement : var VariableDeclarationList; is evaluated as follows: Evaluate VariableDeclarationList. Return (normal, empty, empty).

其中Return (normal,empty,empty)。指的是JavaScript内部识别的类型,而不是打印到控制台的东西。

进一步阅读:

http://ecma262-5.com/ELS5_HTML.htm#Section_12.2

关于Javascript 三元运算符和赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5080242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com