资讯专栏INFORMATION COLUMN

一道三目运算测试题引发的思考

SHERlocked93 / 2937人阅读

摘要:因为加法的优先级比条件运算符高,所以先运算加号,是字符串拼接,结果是非空字符串,在中字符串的布尔类型为。知识点三目运算为真执行为假执行运算优先级在中布尔类型只有以下种情况为假,其他都为真。

一、测试题 原题:以下代码的输出是?
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”。
*
*/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84719.html

相关文章

  • JavaScript中一个运算符优先级问题引发思考

    摘要:中一个运算符优先级问题引发的思考题目假设已经声明可定义为任何值。分析因为我们忽略了运算符的优先级。要知道,加号优先级高于三目运算,低于括号。为值,在里的判断就是值。 JavaScript中一个运算符优先级问题引发的思考 题目 假设 val 已经声明,可定义为任何值。则下面js代码有可能输出的结果为: console.log(Value is + (val != 0) ? define...

    zengdongbao 评论0 收藏0
  • 一道前端面试题引发思考

    摘要:直接开始题目是厉害了说句实话开发中谁写成这样保证会被打死。不过面试就是面试,有面试官的考量点。官方是这么说的。结果完美,不过小姐姐的意思是数组的方法会自动触发数组的。 直接开始题目是 if(a==1 && a==2 && a==3){ alert(厉害了) } 说句实话开发中谁写成这样保证会被打死。 不过面试就是面试,有面试官的考量点。 我理解的点有两个 1、隐式类型转换 先说...

    gaomysion 评论0 收藏0
  • 一道试题引发思考 --- 理解 new 运算

    摘要:首先,我先去上搜索了的定义运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。 今天看到一道面试题,如下,问: 实例化 Person 过程中,Person返回什么(或者 p 等于什么)? function Person(name) { this.name = name return name; } let p = new Person(Tom); 说实...

    shengguo 评论0 收藏0
  • 一道JS试题引发思考

    摘要:也给当初出入迷宫的我不小考验,一道题目可以引发许多思考,今天写下的只是今时今日的想法,到未来也许还有别样的看法。对于回调函数,可以对其传入三个参数分别是当前元素,元素索引,调用的数组。 [1,2,3].map(parseInt) 这道JS题目,相信大家并不会陌生。也给当初出入JS迷宫的我不小考验,一道题目可以引发许多思考,今天写下的只是今时今日的想法,到未来也许还有别样的看法。...

    xiao7cn 评论0 收藏0
  • 一道setTimeout async promise执行顺序试题引发思考

    摘要:如果你要问他和谁当进去的快,要从下面两个方面考虑结束时。至于什么,查了很多的资料,了解到一个浏览器环境只能有一个事件循环,而一个事件循环可以有多个任务队列。 ====据说这是今日头条去年的一道笔试题,主要考察的是setTimeout async promise执行顺序 ~先双手奉上这道题目~ async function async1() { consol...

    soasme 评论0 收藏0

发表评论

0条评论

SHERlocked93

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<