js中 ||是什么意思?

clipboard.png

如上图,第2行和第3行是什么意思

阅读 11.4k
4 个回答

||表示逻辑或,会尝试将符号左侧转换为Boolean对象,如果左侧为true则表达式结果为左侧值,如果为false,则表达式结果为右侧值。

在ES5的年代,这种写法多用于处理默认值。

结合截图来说:如果nodes[link.source]false,则给nodes[link.source]赋值为一个Object,并将其返回。
如果nodes[link.source]不为false,则直接返回nodes[link.source]

P.S. 上边所说的false不是真正意义上的Boolean false,而是所有可以转换为false的值,包含nullundefined0之类的

逻辑或有点类似与默认参数,但是较默认参数更为宽松。
上述代码的意思为:
当 nodes[link.source]有值时将其赋给 link.source,不继续执行||后面的代码;
当nodes[link.source]没有值时,将{name: link.source}先赋值给nodes[link.source],再将nodes[link.source]赋值给link.source。始终保证link.source可以取到相应的值。

或的意思,如果前面值存在,就用前面的值赋值,后面的不执行,如果不存在,就取后面的值.
与之对应的是&&,与.

这个是一个逻辑运算符 ,表示 逻辑 ,即其前后两边的逻辑判断 除非全部为,否则都返回。其对应真值表为

A判断     ||     B判断     输出
0                0         0
1                0         1
0                1         1
1                1         1

其中0表示1表示

具体到你提供的程序,这里利用了逻辑运算的一个特性,就是前面为就执行后面语句,前面为就不执行后面语句。
其中第2句等效于

nodes[link.source]有值且不为0false‘’(空字符串)等逻辑值时将其赋给 link.source,不继续执行||后面的代码;
nodes[link.source]没有值或者值为0false‘0’时,将{name: link.source}先赋值给nodes[link.source],再将nodes[link.source]赋值给link.source。始终保证link.source可以取到相应的值。
后面的第3句类似,只是值的位置不同而已。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏