JS数据类型说明

JS data type clarification

本文关键字:说明 数据类型 JS      更新时间:2023-09-26

我目前正在尝试学习JS,并进行了一次练习,我必须输入以下值和数据类型将返回:

alert(Number(17  / 2 + 1.3))

正确的解决方案是"未定义"和"未定义",我不明白为什么?控制台确实会显示一条警报,显示 9.8。那为什么不是"9.8"和"数字"呢?

alert是一个不返回值的函数。

这个问题的措辞方式听起来就是这里的想法。 alert() 将始终"回馈"未定义的您实际传递到它中的任何内容。

var result = alert(Number(17 / 2 + 1.3))
console.log(result);
console.log(typeof(result));

输出

定义定义

alert(Number(17 / 2 + 1.3))

该值将undefined,类型将undefined,但会对浏览器窗口产生影响,在该窗口中打开一个对话框,其中打印了9.8文本。

如果问题只有

Number(17 / 2 + 1.3)

则值将为9.8,类型Number

警报是一种显示消息框的方法,并且将始终返回未定义。它永远不会返回作为参数传递给它的值。

为了澄清

typeof(Number(17 / 2 + 1.3)) // will return "number"
typeof(alert(Number(17 / 2 + 1.3))) // will return "undefined" (after showing alert box)

我必须在哪里输入以下值和数据类型 返回:

警报的数据类型undefined,因为alert不返回值。

undefined的数据类型也undefined(检查typeof undefined

值输出仅正确,如下所述

根据规格

应用于字符串的 ToNumber 将以下语法应用于输入 解释为 UTF-16 编码代码点序列的字符串

根据运算符优先级,除法运算将首先执行,因此

alert(Number(17 / 2 + 1.3))转换为alert(Number(8.5 + 1.3)) -> alert(Number(9.8)) -> alert(9.8)

数字(17/2 + 1.3) =

9.8,但数字(17/2 + 1,3) = 9.5

由于 Number 构造函数忽略了第二个参数。

"alert"是一个函数。像往常一样,函数的任务是执行一些操作,然后在需要时返回一个值。结果:

alert(Number(17 / 2 + 1.3))

做了操作:在窗口中显示结果 9.8,以便您可以看到它。但它的返回值实际上是未定义的。