JS数据类型澄清

时间:2016-03-16 12:28:18

标签: javascript

我目前正在尝试学习JS并进行了练习,我必须将以下哪些值和数据类型放回去:

alert(Number(17  / 2 + 1.3))

正确的解决方案是" 未定义"和" undefined"我不明白为什么?控制台确实显示了9.8的警报。为什么不是" 9.8"和"数字"然后?

5 个答案:

答案 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,以便您可以看到它。 但它的返回值实际上是未定义的。