函数一:function foo() { var count = 0;
}console.log(count) //undefined函数二:function foo() {
}
foo.count = 0;
console.log(count) // 0这两个count我自己试验了一下,我的理解是:函数一中的count是函数内作用域定义的变量,函数外访问不到,而函数二我的理解是也在foo内定义了一个变量,却在全局作用域中能够访问。请问我的理解错误在哪里,请纠正;请问这两个count有什么区别,在实际用途中又有何意义?
2 回答
小怪兽爱吃肉
TA贡献1852条经验 获得超1个赞
你找错实验属性了,window中有count属性,所以你能打印到count的值,正常的话应该会报错
函数一的理解是正确的,函数外访问不到函数内定义的变量
函数二:函数也是对象,也是可以具有属性的,函数内的变量,函数属性,全局属性,这三者是不一样的
function foo() { var count = 0; // foo函数内部变量} foo.count = 0; // foo函数属性console.log(count) // window属性
这三个count根本不是同一个变量
蝴蝶刀刀
TA贡献1801条经验 获得超8个赞
前者是变量,供函数内做些计算操作,函数不执行这个变量就用不到,并且外部不能直接访问到它。 后者是属性,供外部访问。
如果理解有困难,那就把前者看成私有属性,后者看成公共属性。
最后那句 console.log(count)
也用的不对,那样是直接访问window对象的count属性。
添加回答
举报
0/150
提交
取消