首页 > 编程语言 > 详细

JavaScript笔记-4

时间:2020-02-27 11:21:57      阅读:87      评论:0      收藏:0      [点我收藏+]

变量,作用域和内存问题

变量

检测变量种类使用typeof(),检测对象种类用instanceof()

基本类型值

基本类型包括Null,Undefined,Number,Boolean,String,保存在栈内存中/
基本类型值是按值访问的,可以操作保存变量中实际的值

动态属性

不同于引用类型,不能给基本类型的值添加属性

复制变量值

复制变量值时,复制后的两个变量可以进行任何操作而不互相影响

传递参数

在ECMAScript中,所有的函数的参数都是按值传递的

1
2
3
4
5
6
7
8
function (num){
num += 10;
return num;
}
var count = 20;
var result = add(count);
alert(count);
alert(result);//30

在函数内部为count增加了10,但是函数外部的count依然是20,并没有受到影响

引用类型值

引用类型包括Object,保存在堆内存中.
引用类型值是按引用访问的,因为不能直接访问对象的内存空间

当复制保存对象的某个变量时,操作的是对象的引用,但为对象添加属性时,则操作的是实际的对象

动态属性

能给基本类型的值添加属性

复制变量值

复制变量值时,复制后的两个变量将引用同一个对象,操作会互相影响

传递参数

在ECMAScript中,所有的函数的参数都是按值传递的

1
2
3
4
5
6
7
8
function setName(obj){
obj.name = "Nick";
obj = new Object();
obj.name = "Gnomeek";
}
var person = new Object();
setName(person);
alert(person.name);//"Nick"

在函数内部为obj的属性重设置为”Gnomeek”,但没影响到外部输出的结果,依然是”Nick”

执行环境及作用域

执行环境

1
2
3
4
5
6
大专栏  JavaScript笔记-4class="line">7
8
9
10
11
12
13
14
var color = "blue";
function changeColor(){
var anotherColor = "red";
function swapColors(){
var tempColor = anotherColor;
anotherColor = color;
color = tempColor;
// 这里可以访问 color、anotherColor 和 tempColor
}
// 这里可以访问 color 和 anotherColor,但不能访问 tempColor
swapColors();
}
// 这里只能访问 color
changeColor();

技术分享图片
每一个环境都可以向上搜索作用链域,而永远不能向下搜索
例如全局环境只能访问在全局环境中定义的变量和函数,而不能直接访问局部环境中的任何数据;而局部环境不仅可以访问函数作用域中的变量,而且有权访问其父环境,乃至全局环境。

没有块级作用域

声明变量

使用var声明变量时,会自动添加到最接近的环境中,如果没使用var来声明,则会自动添加到全局环境中。

查询标识符

整个搜索过程从作用域链的前端开始,向上逐级查询与给定名字匹配的标识符;查询到就立即停止,不会继续查询
局部环境中的变量:

1
2
3
4
5
6
var color = "blue";
function getColor(){
var color = "black";
return color;
}
alert(getColor());//black

全局环境中的变量:

1
2
3
4
5
var color = "blue";
function getColor(){
return color;
}
alert(getColor());//blue

不存在的变量:

1
2
3
4
function getColor(){
return color;
}
alert(getColor());//不存在的变量

JavaScript笔记-4

原文:https://www.cnblogs.com/lijianming180/p/12370606.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!