js经典代码题库(基础题库)
Posted 老张在线敲代码
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js经典代码题库(基础题库)相关的知识,希望对你有一定的参考价值。
运算符系列
第一题逗号运算符
let a = (1 + 2, 3 + 4);
alert( a ); // 7
原因:逗号运算符能让我们处理多个语句,使用 , 将它们分开。每个语句都运行了,但是只有最后的语句的结果会被返回。
第二题+= / -=运算符的优先级与普通赋值运算符的优先级?
let n = 2;
n *= 3 + 5;
alert( n ); // 16 (右边部分先被计算,等同于 n *= 8)
+= / -= / *=
运算符的优先级与普通赋值运算符的优先级相同,所以它们在大多数其他运算之后执行
第三题前置运算符跟后置的区别
let a = 1, b = 1;
alert( ++a ); // 2,前置运算符返回最新值
alert( b++ ); // 1,后置运算符返回旧值
alert( a ); // 2,自增一次
alert( b ); // 2,自增一次
第四题或运算符 || 或
//实例1:
alert( undefined || null || 0 ); // 0(都是假值,返回最后一个值)
//实例2:
let firstName = "";
let lastName = "";
let nickName = "SuperCoder";//这里如果也是空字符串,结果则打印Anonymous
alert( firstName || lastName || nickName || "Anonymous"); // 因为nickName有值SuperCoder所以不往下继续找
||或从左到右依次计算操作数。 处理每一个操作数时,都将其转化为布尔值。如果结果是 true,就停止计算,返回这个操作数的初始值。
如果所有的操作数都被计算过(也就是,转换结果都是 false),则返回最后一个操作数。
&&与
alert( null || 2 && 3 || 4 );//3
&&与运算返回找到的第一个假值,如果没有假值就返回最后一个值。且&&比||优先级高先执行&&
类型转换与比较
第一题
"" + 1 + 0 = "10" // (1)
"" - 1 + 0 = -1 // (2)
true + false = 1
6 / "3" = 2
"2" * "3" = 6
4 + 5 + "px" = "9px"
"$" + 4 + 5 = "$45"
"4" - 2 = 2
"4px" - 2 = NaN
7 / 0 = Infinity
" -9 " + 5 = " -9 5" // (3)
" -9 " - 5 = -14 // (4)
null + 1 = 1 // (5)
undefined + 1 = NaN // (6)
" \\t \\n" - 2 = -2 // (7)
有字符串的加法 “” + 1,首先会将数字 1 转换为一个字符串:"" + 1 = “1”,然后我们得到 “1” +
0,再次应用同样的规则得到最终的结果。
减法 -(像大多数数学运算一样)只能用于数字,它会使空字符串 “” 转换为 0。
带字符串的加法会将数字 5 加到字符串之后。 减法始终将字符串转换为数字,因此它会使 " -9 " 转换为数字-9(忽略了字符串首尾的空格)。
null 经过数字转换之后会变为 0。
undefined 经过数字转换之后会变为 NaN。
字符串转换为数字时,会忽略字符串的首尾处的空格字符。在这里,整个字符串由空格字符组成,包括 \\t、\\n以及它们之间的“常规”空格。因此,类似于空字符串,所以会变为 0。
第二题如何让他输出结果为3
let a = prompt("First number?", 1);
let b = prompt("Second number?", 2);
alert(a + b); // 12
let a = prompt("First number?", 1);
let b = prompt("Second number?", 2);
alert(+a + +b); // 3
//或者使用Number()转为数字
let a = Number(prompt("Second number?", 1));
let b = Number(prompt("Second number?", 2));
alert(a + b); // 3
第三题类比较
5 > 4 → true
"apple" > "pineapple" → false
"2" > "12" → true
undefined == null → true
undefined === null → false
null == "\\n0\\n" → false
null === +"\\n0\\n" → false
数字间比较大小,显然得 true。
按词典顺序比较,得 false。“a” 比 “p” 小。
与第 2 题同理,首位字符 “2” 大于"1"。
null 只与 undefined 互等。
严格相等模式下,类型不同得 false。
与第 4 题同理,null 只与undefined 相等。
不同类型严格不相等。
以上是关于js经典代码题库(基础题库)的主要内容,如果未能解决你的问题,请参考以下文章