var prop = "Outer"; //全局作用域的name为Outer
var obj = {
prop: "Inner" //obj的name为Inner
};
function printProp(obj) { //打印对象的name属性的函数
console.log(obj["prop"]);
}
printProp.call(this,obj); //Inner
printProp.call(obj,this); //Outer
printProp.call(obj,obj); //Inner
printProp.call(this,this); //Outer
/*
* 第一行:在this作用域中,传入参数obj:在全局作用域中找到了obj对象,并输出了obj.prop。
* 第二行:在obj作用域中,传入对象this:在obj中没有找到this.prop,
* 于是顺着作用域链向上寻找,
* 找到了window.prop,也就是this.prop。
* 第三行:在obj作用域中,传入对象obj:直接找到了obj.prop。
* 第四行:同上。
*
*/JavaScript——写代码时突然想出的小案例,用以理解作用域
本文深入探讨了JavaScript中的变量作用域概念,通过示例展示了如何在全局、对象、自身等不同作用域中调用函数并打印变量属性。详细解释了this的作用和作用域链的使用。


被折叠的 条评论
为什么被折叠?



