黄金守则第一条
js没有块级作用域(你可以自己闭包或其他方法实现),只有函数级作用域,函数外面的变量函数里面可以找到,函数里面的面找不到。
1 | var a = 10; |
黄金守则第二条
变量的查找是就近原则,去寻找var定义的变量,当就近没有找到的时候就去查找外层。
1 |
|
黄金守则第三条
当参数跟局部变量重名时,优先级是等同的。
1 | var a = 10; |
黄金守则第四条
参数的传递都是按值传递
。基本类型的这个值指基本类型值,引用类型的这个值指引用类型的指针。
变量的情况
1 | var a = 5; |
引用类型变量重新赋值后,会不一样:
1 | var a = [1,2,3]; |
参数的情况
参数与变量的作用域是相似的:
1 | var a = 10; |
1 | var a = [1,2,3]; |
引用类型参数重新赋值后,会不一样:
1 | var a = [1,2,3]; |
最后一个比较怪的
1 | var arry = []; |
- 因为:
- 数组对象只有一个属性,那就是
lenght
(同时,其他普通对象都没有length
属性); - 数组也是对象;
- 对象属性的访问方式有两种,
.
与[]
([]
内字符串属性要加""
); - 个人推断: 数组作为对象的一种,可以对其使用普通对象的所有方法与属性,但不属于数组对象的属性和方法并不会对数组产生实质影响。
- 数组对象只有一个属性,那就是
参考
- js作用域问题一步步透彻理解—skylar艺璇
- javascript 高级程序设计
- JS 对象属性访问的2种方式和用途
内容:判断一个字符串中出现次数最多的字符,统计这个次数