解释 JavaScript 中数字的行为
Explain behaviour of Numbers in Javascript
中的数字函数可以用来乘法,除法,求余数,但不能用于减法和加法?
//I used theNumber = 3
var theNumber = Number ( prompt (" Pick a number " , "") ) ;
alert (" difference " + theNumber - theNumber ) ;
// Difference is NaN, why not 0?
var theNumber = Number ( prompt (" Pick a number " , "") ) ;
alert (" sum " + theNumber + theNumber ) ;
// ->33
为什么会发生串联?为什么不是 6?请帮忙!
正在发生连接,因为它以字符串开头:
alert ( " sum " + theNumber + theNumber ) ;
-> "string" + Number + Number = "StringNumberNumber"
从这一点开始,字符串后面的+
被视为串联运算符,而不是数字加法运算符。如果要避免这种情况,可以将添加项括在括号中:
alert ( " sum " + (theNumber + theNumber) ) ;
-> "String" + (Number + Number) = "StringEvaluatedParenthesis"
胁迫
在javascript中,如果变量是使用冲突的类型进行操作的,那么解释器会隐式更改(强制(变量类型和操作。
运算符优先级和关联性
操作根据链接进行
根据这个来源,(...(具有从左到右的关联性,这意味着它从左到右执行操作。
所以(5 + 4 + 6(;将分解为:
- 5 + 4//返回 9
- 9 + 6//返回 15;
答
您的问题需要您了解上述两个主题。现在
var theNumber = Number ( prompt (" Pick a number " , "") ) ;
alert (" difference " + theNumber - theNumber ) ;
差异 NaN 为什么不是 0?
因此,应用您的新JS功能并考虑(...(的工作原理。
假设数字 = 3;
- "差值">
- +数字="差值3"(将数字强制为字符串(
- " 差值 3" - 数字 = NaN;
字符串 + 字符串在 JS 中以串联的形式有效,但"-"运算符不适用于字符串,因此强制再次发生,将"差 3"转换为返回 NaN 的数字。
console.log(NaN - 5);
有趣的事实:console.log(NaN - NaN(;//也是 NaN!
var theNumber = Number ( prompt (" Pick a number " , "") ) ;
alert (" sum " + theNumber + theNumber ) ;// ->3// ->33
这一次:
- "和" + 数字 = " 总和 3">
- "总和 3" + 数字 = "总和 33">
因为 Javascript 不是严格类型语言,并且在它以字符串开头时需要执行强制转换,所以数字 3 它被强制转换为字符串,输出是它们的串联。如果添加括号(数字 - 数字(,它将把这两个处理为数字,但随后会将结果转换为字符串以产生输出。
一些例子:
var stringValue = "1000";
这会将字符串转换为数字
var numericValue = +stringValue;
这将使它再次串起来
var stringAgain = "" + numericValue ;
我会先使用一元加号运算符将它们转换为数字。
+num1 + +num2;
这主要是由于运算符优先级
-
和+
具有相同的优先级,它们执行从右到左的顺序,所以如果你保留任何一个* or /
它工作正常,因为它们具有高优先级
java script
算术运算符是基于operands
执行的,这就是执行串联的原因。
因此,如果您将算术运算括在括号旁边()
它们会变得高优先级并首先执行,然后执行 nex ......
所以,试试这样
alert("diference " + (theNumber-theNumber))
点击这里获取更多信息
- 使用全局变量来存储数字(JavaScript)
- 字符串到数字JavaScript
- 查找总和最大的数字(Javascript)
- 将字符串中的重复字符替换为不断增长的数字 [Javascript]
- 选择下拉选项时显示数字-javascript
- 用户在数字上输入金额,然后输出最高数字javascript
- 字母数字 JavaScript 正则表达式失败
- 仅数字 Javascript 表单验证
- 如何从一组特定的数字中找到最接近的更高数字:javascript
- 将字符串 num 转换为数字 JavaScript
- 将字符串转换为数字 Javascript
- 提取两种模式之间的数字 javascript
- 添加两个十六进制数字 javascript 与位移
- 确定是否按下了字母或数字-Javascript
- 可以't将字符串转换为数字javascript我的代码出了什么问题
- 按布尔值,然后按数字(javascript)对对象数组进行排序
- 正则表达式,用于获取方括号之间的字符串和数字-javascript
- If和Else比较数字JavaScript
- 检查变量是网页上的所有数字javascript
- 同时检查模为0的两个不同数字(Javascript)