为什么“字符串” - “字符串”NaN?

时间:2016-05-18 13:36:04

标签: javascript nan typeof

这对我来说就像一个无限循环。

var sM = "Hello" - "World";
console.log(sM) && console.log(typeof sM);

我理解为什么字符串 - 字符串输出NaN,但"Hello" - "World" typeofnumber

这意味着用另一个字符串减去字符串会为您提供number的类型。

那里的逻辑在哪里?

3 个答案:

答案 0 :(得分:8)

  

为什么字符串 - 字符串输出NaN

因为减法只处理数字,所以它将两边都转换为数字并获得非数字

  

然后"你好" - "世界" typeof是一个数字。

white-link的类型为 Number This is standard in computing

答案 1 :(得分:2)

因为$(document).ready(function() { var $input = $('#input'); var $output = $('#output'); $input.on('keyup', function() { var text = $input.val(); var url = 'http://coder.jekoder.com/api/?area=reverse&text='+text; $.ajax({ type: 'GET', url: url, dataType: 'text', success: function(data) { var output = data; $output.html = output;}, error: alert('fail') }) // End of AJAX }); }); typeof NaN

有意义的是你不能减去2个字符串,所以它们的减法不是数字(number)。

为什么NaN(不是数字)属于NaN类型,可能没有多大意义。 :)

有关不太合理的部分的详细信息,请参阅this answer

答案 2 :(得分:1)

实际上,这只是javascripts操作产生可能对新手意外的结果的许多情况之一。这是因为隐式类型的纠缠。这是在涉及或期望不同类型的某些操作中自动发生的值的类型更改。 本章将从“你不知道的J”免费书籍中详细描述这些案例:

https://github.com/getify/You-Dont-Know-JS/blob/master/types%20&%20grammar/ch4.md

我明确地向每个JS开发人员推荐这本书系列。