您的位置:首页技术文章
文章详情页

javaScript 函数

【字号: 日期:2023-06-03 11:17:24浏览:28作者:猪猪

问题描述

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
相关文章: