首页 新闻 会员 周边

求JS大神给解释下一句简单的代码!

0
[已解决问题] 解决于 2017-02-08 12:06

这段代码 难道不是返回布尔值类型?

为什么会返回一个对象?
 
在java或net里面 || 是返回布尔类型的
 
我记得要返回对象 需要这么用
 

因为 我记得我看JS书的时候 在进行bool计算的 任何对象都会转出bool类型
document.head 会被转换 Boolean(document.head) 应该返回bool值才对啊

 

还望大神给解释下!

狂扁小朋友的主页 狂扁小朋友 | 初学一级 | 园豆:10
提问于:2017-01-18 21:23
< >
分享
最佳答案
1

A || B: 一般用于如果A的bool值为true,那么结果取A的值,否则取B的值。

是为了防止获取A的值失败,而给的默认值。

var attr = attr || '';这个运算经常用来判断一个变量是否已定义,如果没有定义就给他一个初始值,这在给函数的参数定义一个默认值的时候比较有用。

奖励园豆:5
大志若愚 | 老鸟四级 |园豆:2138 | 2017-01-19 09:54
其他回答(8)
0

在JS里面不一样,你这句话的意思是如果“document.head”不为空,就讲document.head赋值给head,如果空就是将后面的赋值给head。

换个简单例子:

var aa=null;

var b=aa||{};

经常通过这样的方式防止变量aa为空(数组是“||[]”),如果作为判断条件是true。

如果是if(document.head){alert( '1');}else{alert('2');},这种进行bool判断的时候是作为bool返回

tootwo2 | 园豆:502 (小虾三级) | 2017-01-18 21:39
0

head节点元素内部也是一些节点啊,应该是对象的集合。也是对象。

Supper_litt | 园豆:827 (小虾三级) | 2017-01-19 09:30
0

&& 和 || 操作的返回值都不是布尔值。

A || B,A 为 true 的时候返回 A,否则返回 B

A && B,A 为 true 的时候返回 B,否则返回 A

by.Genesis | 园豆:2719 (老鸟四级) | 2017-01-19 10:13
0

由&& 或者||运算符产生的值不是必须为Boolean类型,产生的值始终为两个运算表达式的结果之一。

 

 产生式 LogicalANDExpression : LogicalANDExpression && BitwiseORExpression 按照下面的过程执行 :

  1. 令 lref 为解释执行 LogicalANDExpression 的结果 .
  2. 令 lval 为 GetValue(lref).
  3. 如果 ToBoolean(lval) 为 false ,返回 lval.
  4. 令 rref 为解释执行 BitwiseORExpression 的结果 .
  5. 返回 GetValue(rref).

 产生式 LogicalORExpression : LogicalORExpression || LogicalANDExpression 按照下面的过程执行 :

  1. 令 lref 为解释执行 LogicalORExpression 的结果 .
  2. 令 lval 为 GetValue(lref).
  3. 如果 ToBoolean(lval) 为 true ,返回 lval.
  4. 令 rref 为解释执行 LogicalANDExpression 的结果 .
  5. 返回 GetValue(rref).
绿岛之北 | 园豆:209 (菜鸟二级) | 2017-01-21 18:02
0

第一个说的就行,看看他的就懂了

爱吃de馒头 | 园豆:255 (菜鸟二级) | 2017-02-03 13:21
0

你既然知道 || 的用法,那么就知道 如果得到 || 后面的值,说明 前面的为false。那么在js 里 什么时候为true呢?

1、布尔变量true
2、数字非0,非NaN/ (0 或NaN)

3、对象非null/(null或undefined)
4、字符串非空串(“”)/空串("")

Dene-wang | 园豆:202 (菜鸟二级) | 2017-02-07 14:23
0

在js中,当逻辑或(||)操作的两个操作数中有一个不是布尔值,那么逻辑非就不一定返回布尔值。

  1. 如果第一个操作数的求值结果是true,那么就返回第一个操作数。
  2. 如果第一个操作数的求值结果是false,则返回第二个操作数

在你的例子中,由于document.head是一个对象,它转换为布尔值的结果是true,所有返回第一个操作数

QxQstar | 园豆:212 (菜鸟二级) | 2017-04-29 20:29
0

js 弱语言,
||表示前面的如果断言不过,会取后者
后者不是null、0、false这些都可以算是true,就看你下一步怎么去用这个值了
如果只只为了去判断head这个结果是true或者false,直接if(head)就可以,如果你要使用这个值,它就直接返回给你了

不知道你理解了没有?js就是这么随意

嘿煤贵 | 园豆:208 (菜鸟二级) | 2018-08-30 17:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册