一、测试题
原题:以下代码的输出是?
var val = "false";
alert("val is " + val ? "true" : "false");
解析:
1. 此题考察的知识点: 三目运算、**运算优先级**,字符串拼接。
2. 因为 加法(+) 的优先级比 条件运算符(?) 高,所以先运算加号("val is " + val),
3. "val is " + val 是字符串拼接,结果是**非空**字符串,在js中字符串的布尔类型为true。
4. 所以 弹出 字符串 “true”。
知识点
- 三目运算: condition ? expr1 : expr2
condition为真 执行 expr1 ;condition为假执行 expr2 - 运算优先级
- 在js中布尔类型只有以下6种情况为假,其他都为真。
false, 0, undefined, NaN, "", null ""+10
数字10前面拼接空字符串,改变数据类型,把 number 转换为 string
二、思考
思考一:代码修改为 以下代码的输出是
var val = false;
alert( "" + val ? "true" : "false");
/*
* 解析:
* 1. val是布尔类型false,在前面拼接空字符串,转换为字符串类型,
* 2. "" + val 结果是**非空**字符串,
* 3. 结果弹出 字符串 “true”。
*/
思考二:代码修改为 以下代码的输出是
var val = "false";
alert( val ? "true" : "false");
/*
* 解析:
* val 是字符串"false" 由上知识点
* 显而易见 弹出 字符串 “true”。
*
*/
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。