gpt4 book ai didi

javascript - Javascript 中的作用域和 OR 运算符

转载 作者:行者123 更新时间:2023-11-29 18:02:01 25 4
gpt4 key购买 nike

我今天在写一些 JS 代码时踩到了一些奇怪的东西。

如果属性存在,我想执行一个对象的方法,如果不存在,我想执行一些其他函数。感觉有点花哨,我写了这样的东西:

var obj = {
method: function(){
console.log(this);
}
}

(obj.method || some_other_function)();

如果 obj.method 存在则执行,否则执行 some_other_function

但是this关键字在执行obj.method时引用了window对象,我完全不知道为什么。
请注意,执行 (obj.method)(); 会给出预期的结果(this 指的是我的对象)

显然我不需要这种语法来让我的代码运行,但我真的很想知道这里发生了什么。

我在这里或其他地方都找不到任何答案,我找到的最接近的是 this interesting post ,但它不涵盖这种特定情况。

有人知道那里发生了什么吗?

这是一个fiddle显示实际情况!

最佳答案

(obj.method || some_other_function)(); 本质上与:

var f = obj.method || some_other_function;
f();

通过在调用函数之前通过 or 运行函数,您已将函数从 obj 的上下文中移除。

关于javascript - Javascript 中的作用域和 OR 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34298029/

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