gpt4 book ai didi

javascript - 'this' 可以在 Javascript 中为空吗

转载 作者:IT王子 更新时间:2023-10-29 03:22:06 25 4
gpt4 key购买 nike

我有一个函数如下:

    doSomething: function () {
var parent = null;

if (this === null) {
parent = 'some default value';
} else {
parent = this.SomeValue();
}
}

parent 是否可以设置为“某个默认值”,或者检查 null 是否多余?

或者,如果我使用限制较少的方法会怎样:

    doSomething: function () {
var parent = this ? this.SomeValue() : 'some default value';
}

在这种情况下,父级是否可以设置为“某个默认值”?

最佳答案

在非严格模式下,this 经历了Object(this) 转换,因此它始终为真。异常(exception)情况是映射到全局对象的 nullundefined。所以 this 永远不会是 null 并且总是真实的,这使得两个检查都是多余的。

然而,在严格模式下,this 可以是任何东西,所以在这种情况下你必须小心。但是话又说回来,您必须自己选择加入严格模式,所以如果您不这样做,也不必担心。

(function() {               return this; }).call(null); // global object
(function() { "use strict"; return this; }).call(null); // null

specification ES5 说:

The thisArg value is passed without modification as the this value. This is a change from Edition 3, where a undefined or null thisArg is replaced with the global object and ToObject is applied to all other values and that result is passed as the this value.

关于javascript - 'this' 可以在 Javascript 中为空吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9739806/

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