JavaScript中可以为引用类型值动态添加属性
var person = new Object(); person.name = "Nicholas"; alert(person.name); //"Nicholas"
引用值作为函数参数,向函数传递的是值,但会访问实参
function setName(obj) { obj.name = "Nicholas"; } var person = new Object(); setName(person); alert(person.name); //"Nicholas"
重写函数内部的对象时,变量引用的就是一个局部变量了
function setName(obj) { obj.name = "Nicholas"; obj=new Object(); obj.name="Greg"; } var person = new Object(); setName(person); alert(person.name); //"Nicholas"
在函数内用var声明的变量是局部变量,没有用变量前面没用var声明的是全局变量
function add(num1, num2) { var sum = num1 + num2; return sum; } var result = add(10, 20); //30 alert(sum); //causes an error since sum is not a valid variable
function add(num1, num2) { sum = num1 + num2; return sum; } var result = add(10, 20); //30 alert(sum); //30
查询标识符搜索的过程是从作用域前端开始,向上逐级查询与给定名字匹配的标识符
var color = "blue"; function getColor(){ return color; } alert(getColor()); //"blue"
如果局部变量存在着同名标识符,就不会使用父环境中的标识符
var color = "blue"; function getColor(){ var color = "red"; return color; } alert(getColor()); //"red"
《JavaScript高级程序设计》——第四章 变量、作用域和内存管理
原文:https://www.cnblogs.com/WP-WangPin/p/12764940.html