这对我来说就像一个无限循环。
var sM = "Hello" - "World";
console.log(sM) && console.log(typeof sM);
我理解为什么字符串 - 字符串输出NaN,但"Hello" - "World"
typeof
是number
。
这意味着用另一个字符串减去字符串会为您提供number
的类型。
那里的逻辑在哪里?
答案 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开发人员推荐这本书系列。