我目前正在尝试学习JS并进行了练习,我必须将以下哪些值和数据类型放回去:
alert(Number(17 / 2 + 1.3))
正确的解决方案是" 未定义"和" undefined"我不明白为什么?控制台确实显示了9.8的警报。为什么不是" 9.8"和"数字"然后?
答案 0 :(得分:3)
alert是一个不返回值的函数。
问题措辞的方式,听起来就像这里的想法。 alert()将始终“回馈”未定义的任何实际传递给它的内容。
var result = alert(Number(17 / 2 + 1.3))
console.log(result);
console.log(typeof(result));
输出
未定义 未定义
答案 1 :(得分:1)
在
的情况下alert(Number(17 / 2 + 1.3))
值为undefined
且类型为undefined
,但会在浏览器窗口中产生影响,其中打开一个对话框并打印出文本9.8
。< / p>
如果问题只有
Number(17 / 2 + 1.3)
然后值为9.8
,类型为Number
答案 2 :(得分:1)
警报是一种显示消息框的方法,并且始终返回undefined。 它永远不会返回作为参数传递给它的值。
澄清
typeof(Number(17 / 2 + 1.3)) // will return "number"
typeof(alert(Number(17 / 2 + 1.3))) // will return "undefined" (after showing alert box)
答案 3 :(得分:0)
我必须在下面给出以下值和数据类型 回:
警报的数据类型为undefined
,因为alert
没有返回值。
undefined
的数据类型也是undefined
(检查typeof undefined
)
值输出只有在下面说明时才是正确的
根据spec
应用于字符串的ToNumber将以下语法应用于输入 字符串被解释为UTF-16编码的代码点序列
根据运算符优先级,首先执行除法运算,所以
alert(Number(17 / 2 + 1.3))
转换为alert(Number(8.5 + 1.3))
- &gt; alert(Number(9.8))
- &gt; alert(9.8)
数字(17/2 + 1.3)= 9.8但数字(17/2 + 1,3)= 9.5
由于Number构造函数忽略了第二个参数。
答案 4 :(得分:0)
“警报”是一种功能。 像往常一样,函数的任务是执行某些操作,然后在需要时返回值。 结果:
alert(Number(17 / 2 + 1.3))
它完成了操作:在窗口中显示结果9.8,以便您可以看到它。 但它的返回值实际上是未定义的。