JS中的这段代码给了我一个弹出窗口,说"我认为null是一个数字",我觉得有点令人不安.我错过了什么?
if (isNaN(null)) {
alert("null is not a number");
} else {
alert("i think null is a number");
}Run Code Online (Sandbox Code Playgroud)
我正在使用Firefox 3.这是一个浏览器错误吗?
其他测试:
console.log(null == NaN); // false
console.log(isNaN("text")); // true
console.log(NaN == "text"); // falseRun Code Online (Sandbox Code Playgroud)
那么,问题似乎不是与NaN的精确比较?
编辑:现在问题已经得到解答,我已经清理了我的帖子,以便为存档提供更好的版本.然而,这使得一些评论甚至一些答案有点难以理解.不要责怪他们的作者.我改变的事情包括:
我正在关注W3Schools的JavaScript教程.在阅读每个页面时,他们会向用户注意"避免创建对象"并改为使用原始数据类型.他们给出了这样的理由:"代码变得难以理解,或者如果使用对象,执行速度将会降低".我们应该避免在JavaScript中创建对象吗?
例如:
var value = new Number(1); // Avoid this
var value = 1; // do something like this instead.
Run Code Online (Sandbox Code Playgroud) 我有一个变量x,我想测试x是否设置为NaN.我怎么做?
我的第一直觉可能就是测试它,就像这样:
if (x === NaN) { ...
Run Code Online (Sandbox Code Playgroud)
傻兔子,不,这太容易了.NaN在SQL中就像NULL,它不等于任何东西,甚至本身.
但是看,有一个叫做的函数isNaN()- 也许会这样做!
不,据我所知,isNaN()完全没有价值.
例如,isNaN([""])正确返回false,但isNaN(["."])返回true.你不想知道我是如何了解这个缺陷的.
我该怎么做呢?
有一些奇怪的东西.
为什么
与isNaN("")我得到False
不过,
与parseInt("")我得到NaN
?
这个说false,意思""是一个数字:
alert(isNaN(""));
Run Code Online (Sandbox Code Playgroud)
这个说NaN,意思""是不是数字,不能转换:
alert(parseFloat(""));
Run Code Online (Sandbox Code Playgroud)
我期待第二个代码转换""为,0因为""测试时是一个数字,IsNaN但我错了!我疯了还是我错过了什么?
在我当前的源代码文本框值是1.当我尝试alert(isNaN(obj.text())它返回false预期但在我写alert(a);它后parseInt 返回NaN
minus.click(function () {
var a = 1; if (!isNaN(obj.text())) a = parseInt(obj.text());
if (a > 1) a -= 1; obj.text(a);
});
Run Code Online (Sandbox Code Playgroud)
问题是什么?
编辑:这是完整的代码:
<input type="text" class="basket-txt" value="1" />
jQuery.fn.basket = function (options) {
var defaults = {
}
options = jQuery.extend(defaults, options);
this.each(function () {
var $this = $(this);
$this.height(32).css({ 'line-height': '32px', 'font-weight': 'bold', 'width':'40px', 'text-align':'center', });
var tbl = $('<table border="0" style="border-spacing:0px;float:left;">').appendTo($this.parent());
var tr1 = $('<tr>').appendTo(tbl);
var plus = $('<div …Run Code Online (Sandbox Code Playgroud)