javaScript 函數(shù)
問題描述
function Foo(){ getName = function(){console.log(1); }; return this;}var getName = function (){ console.log(4)}; Foo().getName();
上面的代碼為什么輸出的是1;
foo()運行之后輸出了this,這個this是window對象,foo()中的getName是不是也就成了全局下的函數(shù)表達式;而下面的var getName也是一個函數(shù)表達式;為什么打印結果是1;
foo,執(zhí)行后它等同于于下面這個代碼么?
getName = function(){ console.log(1);};var getName = function (){ console.log(4)}; getName(); //4
問題解答
回答1:沒調(diào)用Foo的時候
window.getName = function(){ console.log(4);}
調(diào)用Foo()的時候
getName = function(){console.log(1); };// 相當于更改了 window.getName
調(diào)用后Foo里面的return this的確指向window,所以最后結果是1.
回答2:function Foo(){ getName = function(){console.log(1); }; return this;}//全局聲明一個變量getNamevar getName = function (){ console.log(4)};//重新賦值getName = function () { console.log(1)}//最終打印結果為1window.getName()回答3:
Foo().getName(); 執(zhí)行的是Foo中的getName
回答4:function Foo(){ getName = function(){console.log(1); }; return this;}var getName = function (){ console.log(4)};Foo().getName();
function Foo(){ getName = function(){console.log(1); }; return this;}var getName = function (){ console.log(4)};getName = function () { console.log(1)}window.getName()回答5:
你console.log(Foo())看看,確定是window?
回答6:Foo函數(shù)里面的getName不是用var申明的,所以是全局的,所以當Foo運行時函數(shù)里面的getName函數(shù)會覆蓋外面定義的
相關文章:
1. angular.js - webpack build后的angularjs路由跳轉(zhuǎn)問題2. java - Activity中的成員變量被賦值之后,Activity被回收的時候內(nèi)存才會被釋放嗎3. java - web項目中,用戶登陸信息存儲在session中好 還是cookie中好,取決于什么?4. 數(shù)組按鍵值封裝!5. 為什么 必須在<ul> 下建立 <li> 在建<a>?6. 單擊登錄按鈕無反應7. 8.1.0.5版本的root數(shù)據(jù)庫怎么導出啊?8. 請求一個數(shù)據(jù)返回內(nèi)容為空或者錯誤如何再次請求幾次9. 老師,怎么不講一次性添加多個數(shù)據(jù)10. 我寫的哪里有錯?請大神幫忙查看一下。
