鍍金池/ 問答/Android  HTML/ js函數(shù)調(diào)用問題

js函數(shù)調(diào)用問題

var color = "green";
    var test = {
        color:"blue",
        getColor:function(){
            var color = "red";
            alert(this.color);
        }
    }
    var getColor = test.getColor;//js函數(shù)調(diào)用時加括號和不加括號的區(qū)別:不加括號相當(dāng)于把函數(shù)代碼賦給等號左邊,加括號是把函數(shù)返回值賦給等號左邊
    getColor(); //為windows調(diào)用
    test.getColor();//為test對象調(diào)用

運(yùn)行第一個getColor(),alert彈出的的不應(yīng)該是"green"嗎,為什么我這里是undefined?

兩個alert顯示的值:
clipboard.png

clipboard.png

回答
編輯回答
熊出沒

圖片描述

直接運(yùn)行,好像沒問題呢!是alert green。
可能跟環(huán)境有關(guān),你是什么瀏覽器?我用的Chrome,在Mac下面。

2017年11月6日 17:04
編輯回答
氕氘氚

alert彈出的確實是green,至于你說的undefined應(yīng)該是getColor()的返回值,在控制臺中輸入命令,下一行會打印返回值return xx;

var test = {
    color:"blue",
    getColor:function(){
        var color = "red";
        alert(this.color);
        //這里并沒有retrun 任何東西
        //加上return就有結(jié)果了
        return this.color
    }
}
2018年6月16日 15:21
編輯回答
黑與白

你是在控制臺去運(yùn)行的吧,最后一個undefined是因為沒有return值,可以忽略

2017年4月18日 19:03
編輯回答
笨尐豬

把你編輯器里原始代碼截圖發(fā)一下

2018年1月14日 14:20
編輯回答
做不到

第一個調(diào)用的時候 this 是window
第二個才是 test

2018年8月20日 12:37
編輯回答
夕顏

這是因this的指向,是在函數(shù)調(diào)用的時候綁定的,而不是在函數(shù)聲明的時候,與當(dāng)前的執(zhí)行上下文環(huán)境有關(guān)。第一個函數(shù)調(diào)用的執(zhí)行上下文是window,而第二個test對象。所以答案顯而易見。

2018年6月11日 02:44