在此示例中,为什么有typeof返回编号?
class MyClass{}
var result = typeof - "Hello, World";
// -----------------^
console.log(result);
// number -- for me, it's not logic
var result2 = typeof + new MyClass();
// ------------------^
console.log(result2);
// number -- for me, it's not logic
但是在这种情况下:
var str = - new MyClass();
// NaN -- why not an exception
var str = - "some strings";
// NaN -- why not an exception
var result2 = typeof -24;
console.log(result2);
// number -- logic because its a number
也许某些情况是逻辑上的,但我的问题是,为什么在第一和第二个示例中,打字稿返回 number 作为结果,逻辑上结果应为“ object”,“ undefined”, “ NaN”,甚至引发异常,就像本例一样:
var result2 = typeof % 'Hello, World';
但不是数字!
我尝试搜索文档,但没有解释。
这是一个错误吗?
答案 0 :(得分:3)
var result = typeof - "Hello, World";
此代码的含义是:
-
应用于"Hello, World"
NaN
typeof
运算符应用于值NaN
"number"
“为什么JavaScript不抛出更多异常?”是一个哲学问题,除了“它的设计师认为这样会更好”之外,实际上并没有一个具体的答案。
答案 1 :(得分:2)
因为NaN
是number
const nantype = typeof NaN;
console.info(nantype);