-
变量
变量分为基本类型和引用类型,基本类型是简单的数据段,引用类型是由多个值构成的对象
-
基本类型不能动态的添加属性值,而引用类型可以
var person = "123" ; person.age = 12 ; //无效 var person = {} ; perage.age = 12 ; //ok
-
js中基本变量类型的复制互不影响,复制引用类型变量(对象)是引用同一个对象
var name1 = 'zs' ; var name2 = name1 ; name2 = 'lisi'; alert(name1) ; //zs var person1 = {} ; var person2 = person1 ; person1.age = 12 ; alert(person2.age) ; //12
-
函数参数的传递,所有参数的参数都是按值传递,虽然访问变量有按值和按引用两种方式,但是参数只能按值传递
function add(num) { return num+num ; } var num1 = 10; var num2 = add(num1) ; console.log(num1); //10 console.log(num2); //20 //对象 function setAge(person) { person.age = 12; var person = {}; person.age = 24 ; } var person1 = {} setAge(person1); console.log(person1.age); //12,如果是按引用传递那么值应该为24
-
作用域
执行环境定义了变量或函数能访问的其他数据,定义了它们的行为,每个执行环境都有一个与之关联的变量对象,在环境中定义的所有变量和函数都保存着这个变量对象中
每个函数都有自己的执行环境,当代码在一个环境中执行时,会创建变量对象的作用域链,作用域链的用途就是保证对执行环境中访问的变量和函数的有序访问。作用域链的前端,始终是当前执行代码所在的环境变量,而下一个环境变量就是包裹当前环境的外部环境,最后一个是全局环境。
可以通过with或者catch延长作用域链
-
var定义的变量的作用域
-
没有块级作用域
{ var color = 'red'; } //如果存在块级作用域,color已经被销毁 alert(color); //red
-
被添加到最接近的环境中,如果不使用var声明,变量会被添加中全局环境中
function add(num) { var result = num return result; } var num1 = add(10); alert(result); //error function add(num) { result = num return result; } var num1 = add(10); alert(result); //10
-
-
查询变量时,根据作用域链查询,找到就返回
//实例一 var color = 'red' function getColor(){ return color; } alert(getColor); //red //实例二 var color = 'red' function getColor(){ var color = 'blue' return color; } alert(getColor); //blue
JavaScript-变量、作用域
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...