1.var 变量
有局部变量与全局变量同名,在方法内优先使用局部变量
可以看出在方法中对全局变量进行了修改
在这里a没有var修饰,它是隐式的全局变量
在这里要注意var的声明,在方法内部不管在什么地方声明,都跟它们在函数的顶部声明一样
function fun() { var a = b = c = 0; //这样错误,b,c都是隐式的全局变量了 var aa, bb, cc = "hongda", dd = 10; //这样是好的 }
查看全局变量与隐式全局变量
在技术上,隐式全局变量并不是真正的全局变量,但它们是全局对象的属性。属性是可以通过delete
操作符删除的,而全局变量是不能的,但全局变量也是window的属性
为什么隐式全局变量可以被删除,而全局变量不可以被删除?
可以发现函数内部的aa被删除了
隐式全局变量可以被删除是不是这样的关系,我也不清楚?
js函数的声明:
function fun() { console.log("fun"); console.log(typeof fun); } var f = function () { console.log("fun2"); } var f2 = function fu() { console.log("fun3"); console.log(typeof fu); } fun(); f(); f2(); console.log(typeof fu);
大概就是这样的三种方式,
第一种,直接声明一个函数
第二种,先声明一个变量f,再声明一个匿名函数,将匿名函数赋值给变量f,赋值以后f的类型才为function
第三种,先声明一个变量f2,再声明一个函数fu,只是这个fu只能在该函数的内部使用,不能在外部使用
2.for循环
一般应用时,使用for in 遍历对象内部的属性,使用for()来遍历数组,for in 也可以用来遍历数组,因为数组也是个对象,但for in 遍历对象属性是不一定是顺序的,所以数组还是使用for()好
3.hasOwnProperty
就是去除对象内部从相对应的prototype中获取的属性