久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

javaScript 函數

瀏覽:134日期:2023-06-03 11:17:24

問題描述

function Foo(){ getName = function(){console.log(1); }; return this;}var getName = function (){ console.log(4)}; Foo().getName();

上面的代碼為什么輸出的是1;

foo()運行之后輸出了this,這個this是window對象,foo()中的getName是不是也就成了全局下的函數表達式;而下面的var getName也是一個函數表達式;為什么打印結果是1;

foo,執行后它等同于于下面這個代碼么?

getName = function(){ console.log(1);};var getName = function (){ console.log(4)}; getName(); //4

問題解答

回答1:

沒調用Foo的時候

window.getName = function(){ console.log(4);}

調用Foo()的時候

getName = function(){console.log(1); };// 相當于更改了 window.getName

調用后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(); 執行的是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函數里面的getName不是用var申明的,所以是全局的,所以當Foo運行時函數里面的getName函數會覆蓋外面定義的

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 奉节县| 新邵县| 凤山县| 珲春市| 潼关县| 滦南县| 敦煌市| 固原市| 雷山县| 姜堰市| 永德县| 金山区| 当雄县| 将乐县| 潞西市| 辽宁省| 饶阳县| 乳山市| 思茅市| 航空| 龙泉市| 筠连县| 花莲县| 烟台市| 卫辉市| 峨眉山市| 隆林| 德格县| 日土县| 兴安县| 宜宾市| 桂阳县| 怀化市| 克山县| 阿拉善左旗| 监利县| 大丰市| 永胜县| 桐庐县| 于田县| 仙居县|