这怎么可能?我认为在前两个示例中它应该返回未定义。

function SecretCode() {
    var _secretNum = 78;

    this.guessNum = function(num) {
        if(num > _secretNum) {
            return console.log("Lower");
        } else if (num < _secretNum) {
            return console.log("Higher");
        } else {
            return console.log("You guessed it");
        }
    }
}

let secret = new SecretCode();
secret.guessNum(this.secretNum);    //You guessed it
secret.guessNum(this._secretNum);   //You guessed it
secret.guessNum(secretNum);         //is not defined
secret.guessNum(_secretNum);        //is not defined
console.log(secret.secretNum);      //undefined
console.log(secret._secretNum);     //undefined

最佳答案

是的,作为函数调用的参数,this.secretNumthis._secretNum都未定义。但是num > undefinednum < undefined都返回false。因此,if结构除了进入第三分支外别无其他可能性。

关于javascript - 这怎么可能?访问对象变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46367931/

10-10 13:18