gpt4 book ai didi

javascript - 变量范围相关。从不同的函数调用函数中的变量 - 意外的行为/结果

转载 作者:行者123 更新时间:2023-11-30 19:16:51 26 4
gpt4 key购买 nike

我正在学习 javascript,我偶然发现了这种行为,它不会在代码末尾执行函数 f2()。

function f1() {
var oneT = 55;
console.log(oneT);
}
f1();
console.log(typeof(oneT));

function f2() {
if (typeof(oneT) == undefined) {
console.log("oneT can't be read outside the f1() as it's scope is limited to the fn f1().");
}
}
f2();

如果 undefined 没有放在 ""中,那么末尾的 f2() 将被跳过(被忽略?)。如果放入 "",则执行 f2()。有人可以向我解释这种行为的可能原因吗?提前致谢!

最佳答案

您看到的是因为 typeof 运算符将值 "undefined" 作为 string 返回给您。

来自 MDN docs :

The typeof operator returns a string indicating the type of the unevaluated operand.

您可以在 typeof(typeof(oneT)) 之上执行 typeof() 以检查它确实返回了一个字符串。

正在调用 f2() 但您看不到任何输出,因为 if block 被完全跳过,因为您正在比较字符串 "undefined"typeof(oneT) 返回,undefined 值:

function f1() {
var oneT = 55; //function scope
console.log(oneT);
}

f1();
console.log(typeof(typeof(oneT))); //string

function f2() {
if (typeof(oneT) == undefined) { //false and if is skipped
console.log("oneT can't be read outside the f1() as it's scope is limited to the fn f1().");
}
console.log("Inside f2"); //prints this
}

f2();

function f3() {
if (typeof(oneT) === "undefined") { //true
console.log("oneT can't be read outside the f1() as it's scope is limited to the fn f1().");
}
}
f3();

关于javascript - 变量范围相关。从不同的函数调用函数中的变量 - 意外的行为/结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57901043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com