Javascript 为什么控制台给我不同的输出,如果我改变了输入顺序如下
大家好,我现在介绍一下javascript概念。今天我遇到了一个 下面的问题:我试过下面的例子 在浏览器控制台或firebug中,当我输入Javascript 为什么控制台给我不同的输出,如果我改变了输入顺序如下,javascript,Javascript,大家好,我现在介绍一下javascript概念。今天我遇到了一个 下面的问题:我试过下面的例子 在浏览器控制台或firebug中,当我输入1 | | true时 输出为1,当我输入true|1时,它给出输出true 为什么??请详细说明。是否由类型转换引起?>我仍然需要满意的答案 您正在检查or比较的第一个参数是否为真。在javascript中,或比较在参数为true时立即返回true 1是true,也是true,因此它将选择在这两种情况下传递的第一个参数 您看到的内容也被用作短路,因此您可以检
1 | | true
时
输出为1,当我输入true|1
时,它给出输出true
为什么??请详细说明。是否由类型转换引起?>我仍然需要满意的答案
您正在检查or比较的第一个参数是否为真。在javascript中,
或
比较在参数为true时立即返回true
1
是true
,也是true
,因此它将选择在这两种情况下传递的第一个参数
您看到的内容也被用作短路,因此您可以检查变量是否有值,如果没有,则在|
之后使用“default”
例如,考虑以下内容:
var a;
console.log(a || 'notSet');
将记录notSet
,因为a
未定义且选择了“默认值”
或
短路评估为true,因此将记录true
另请参见检查or比较的第一个参数是否为真。在javascript中,
或
比较在参数为true时立即返回true
1
是true
,也是true
,因此它将选择在这两种情况下传递的第一个参数
您看到的内容也被用作短路,因此您可以检查变量是否有值,如果没有,则在|
之后使用“default”
例如,考虑以下内容:
var a;
console.log(a || 'notSet');
将记录notSet
,因为a
未定义且选择了“默认值”
或
短路评估为true,因此将记录true
另请参见两个
1
和true
都是真实值。or运算符只是返回它遇到的第一个真实值。为了说明这一点,您可以尝试false | 1
。1
和true
都是真实值。or运算符只是返回它遇到的第一个真实值。为了说明这一点,您可以尝试false | | 1
。有趣的是,Chrome为您的示例记录了“static”。我不明白。Chrome版本:48.0.2564.103 m。不在我的Chrome中,您使用哪个版本?我使用的是49.0.2623.47 beta(64位),它会在Stack0verflow中记录“notSet”@Stack0verflow。所以,也许这是48版中的一个bug?我不确定,但它应该总是在Stack0verflow中记录“notSet”。nodejs也可以做到这一点。使用firefox 41.0b9有趣的是,Chrome为您的示例记录“静态”。我不明白。Chrome版本:48.0.2564.103 m。不在我的Chrome中,您使用哪个版本?我使用的是49.0.2623.47 beta(64位),它会在Stack0verflow中记录“notSet”@Stack0verflow。所以,也许这是48版中的一个bug?我不确定,但它应该总是在Stack0verflow中记录“notSet”。nodejs也可以做到这一点。使用firefox 41.0b9