猿问
下载APP

js中的变量查找问题

var name="hello";
var o={
    name:"hi"
}
var sayName =  function () {
    console.log(name)
}
sayName(); //hello
sayName.call(o); //hello
o.sayName=sayName;
o.sayName(); //hello

这段代码,为什么后两个的输出都是hello,不应该是hi吗?

小熊熊HELLO
浏览 1834回答 1
1回答

qq_药药_0

你还是没搞懂,单纯的变量问题;他只会循着函数作用域来展开;sayName()你执行这个函数他还是只会寻找自身定义这个变量没有;自身没name;那么找上级函数;他上级根本没有函数;就只有全局去找;找到了var name="hello";全局定义了个hello。你要找到对象里面的name可以这么写var sayName =  function () {     console.log(this.name) }这样返回的就是hi了
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答