function sayHello(){
console.log("saying hello");
function sayGoodnight(){
console.log("saying goodnight");
}
return sayGoodnight();
}
var x =sayHello();
console.log(x);
输出是-(说hello,说再见和未定义)为什么会有一个未定义的?
我正在声明一个函数,它用作比较。我的问题是:
为什么条件起着陈述的作用?
为什么第4行工作,而不是第5行?
我知道这段代码是不现实的和未使用的,但是为什么编译器会允许这种语法呢?
谷歌上没有答案。但话又说回来,我可能找错地方了。
var A = () => console.log(3);
if (A === console.log(1)) {
A();
};
A ? A() : null;
if (A === console.log(1567)) {};
if (B === console.log(1567)) {};
预期产出如下:
3
产出如下:
1
3
1567
JavaScript有7种基本数据类型:字符串、数字、布尔值、null、未定义的、符号、bigint。
我理解三种数据类型,字符串、数字、布尔;我也理解bigint是因为数字不够而引入的。数字是简单浮点数的一个例子:
var a = 1.000000000000001;
var b = 1.0000000000000001;
console.log(Number.isInteger(a)) //false
console.log(Number.isInteger(b)) // true
以下是我的问题:
什么是未定义的?它与c++中的void相同吗?但是void是一个关键字。为什么未定义
我有一个类的实例,其中几个数字和字符串属性分别初始化为0或"“。当访问这些属性时,它们是“未定义的”。将这些属性初始化为任何其他属性,即0.1或“”,并被认为是定义的。
为什么?0和"“是否等同于未定义的?
export class Car {
id = 0
name = ""
}
如果我有一个Car实例,并且尝试访问一个属性,它将是“未定义的”,
let myCar = new Car
if (myCar.id) {
console.log('yay')
} else {
console.log('b
var a = function() {
alert( this ); // [object Window]
alert( a ); // undefined
}.call( a );
为什么this仍然引用window对象和未定义的a。或者,当我这样做时,this等于函数a不是未定义的。
var a = function() {
return this === a; // true
};
a.call(a);
谁能解释一下为什么这两个看似等价的函数会产生不同的结果?