首页 > 试题广场 >

假设val已经声明,可定义为任何值。则下面js代码有可能输出

[单选题]
假设val已经声明,可定义为任何值。则下面js代码有可能输出的结果为:
console.log('Value is ' + (val != '0') ? 'define' : 'undefine');
  • Value is define
  • Value is undefine
  • define
  • undefine
  • Value is define 或者 Value is undefine
  • define 或者 undefine
  • 其它选项都有可能
答案C 加号优先级高于 三目运算。低于括号。 所以括号中无论真假 加上前边的字符串都为 TRUE 三目运算为TRUE是 输出 define
发表于 2017-01-04 14:19:38 回复(18)
A  虽然定义了,但是javascript是弱类型语言,不会默认初始化,所以是A

编辑于 2016-12-14 17:55:32 回复(0)
可以将它看做('value is '+(val !='0'))?'define' : 'undefine'
发表于 2022-01-03 11:47:25 回复(0)
如果把 
(val != '0') ? 'define' : 'undefine'
片段再包个括号就不一样!
发表于 2021-06-01 15:27:14 回复(0)
选A的在这儿 这题有点让人大意
发表于 2021-01-22 17:27:08 回复(0)
这道题主要考察的就是三目运算。?前面的整个都是作为判断依据的表达式,所以输出的结果  是 defined  。‘Value is’ 是干扰我们判断的!

发表于 2018-03-18 14:23:38 回复(1)
是我客户端的问题吗?我没有办法看全所有的代码。。。
发表于 2017-03-31 00:47:07 回复(6)
E
发表于 2017-01-03 20:12:58 回复(0)
C,因为+的优先级高于?
发表于 2016-12-19 15:48:19 回复(0)
如果val只是声明了,而没有定义任何值的话,选C。因为+运算符优先级大于?:运算符,所以代码执行顺序是('Value is ' + (val != '0')) ? 'define' : 'undefine',而?前面的表达式运算结果为字符串'Value is true',它被转换为布尔值是true,所以打印出来的结果是字符串'define'。
编辑于 2016-12-14 20:21:40 回复(3)
本题考查三目运算符的应用,运算符优先级,+>?:,前面''value is''是误导的,实际是整个表达式作为判断依据,因为''value is ''+val是字符串,且肯定不为空,在javascript中非空字符串为true,所以输出defined
发表于 2017-03-09 23:30:07 回复(2)
console.log('Value is ' + (val != '0') ? 'define' : 'undefine');
console.log('Value is true/false' ? 'define' : 'undefine');//无论(val!=0)是真是假 字符串不为空
console.log(true ? 'define' : 'undefine')
=> define

发表于 2017-09-10 16:34:07 回复(0)
define ; 先执行val != '0',为true;然后是执行'Value is true' ? 'define' : 'undefine'
发表于 2016-12-14 21:00:30 回复(2)

因为加号优先级高于三目运算符低于括号。

所以先进行  'Value is ' + (val != '0')   所以这可能会 "Value is true" ||"Value is false"  因为后面要进行三目运算,所以这里会进行Boolean类型转换。根据Boolean 类型中的String类型的转换规则,当字符串不为空时为true 。所以最后为true?"define":"undefine"。所以输出为define



编辑于 2018-02-02 21:17:34 回复(0)
记住了,➕运算符优先级大于三元运算符
发表于 2017-03-05 12:39:00 回复(2)
本题中运算符优先级:    括号> 加号> 三目运算符
console.log('Value is ' + (val != '0') ? 'define' : 'undefine');
第一步:不管val是啥,(val != '0') 的值只有true或者false
第二步:'Value is ' + true 或者  'Value is ' + false  结果都是  非空字符串
第三步:对于三目运算符,非空字符串就是true,故三目运算符结果是 'define'

发表于 2022-01-18 17:03:54 回复(1)
发表于 2020-07-18 11:12:32 回复(0)
本题考查三目运算符的应用,运算符优先级,前面''value is''是误导的,实际是整个表达式作为判断依据,因为''value is ''+val是字符串,且肯定不为空,在javascript中非空字符串为true,所以输出defined
发表于 2017-02-06 18:29:28 回复(0)
'Value is ' + (val != '0') 这个才是判断式子
发表于 2017-01-07 19:20:40 回复(0)
在JS中,下面六种情况被当成false:false,undefined,null,数字0,数字NAN,空字符串。在这里,加号运算符优先级大于三目运算符,小于括号运算符,因此最终表达式等同于~value is true? defined:undefined;或者是value is false?defined:undefined;无论是哪种,三目运算符的结果都是返回true的那个,也就是define
编辑于 2017-03-17 00:45:22 回复(2)