javascript变量问题
2024-08-24 04:22:40
CMAScript变量包含两种不同数据类型的值:
基本类型值:简单的数据段;引用类型值:可能有多个值构成的对象。
5种基本类型:Undefined,Null,Bollean,Number,String;
基本类型是按值访问的,因为可以操作保存在变量中额实际的值;
引用类型:引用类型是保存在内存中的对象,js中不能直接访问内存中的位置,操作的对象,实际上是在操作对象的引用,为对象添加属性时,操作的是实际的对象;
动态属性
基本类型不能添加属性和方法;引用类型可以添加属性和方法;
复制变量值
基本类型复制:相当于重新重新创建一个新值,这两个变量可以参加任何操作互不影响
var num1 = 5;
var num2 = num1;
alert(num2);
引用类型复制:复制的是一个指针,指向堆中的一个对象,复制结束后,两个指针都指向同一个对象,改变其中一个变量,另一个变量也会改变
var obj1 = new Object();
var obj2 = obj1;
obj1.name = "xiaoming";
alert(obj2.name)
传递参数
基本类型按基本类型复制传递(被传递的值会被复制给局部变量,就是arguments对象中的一个元素),
function addTen(num){
num += 10;
return num;
}
var count =20;
var result = addTen(count);
alert(count)
alert(result)
引用类型按引用类型复制传递(把内存中的地址复制给局部变量)
function setName(obj){
obj.name = "xiaoming";
obj = new Object(); //当在函数内部重写obj时,这个变量的引用就是一个局 部对象了;局部对象在函数执行完毕后会立即销毁;
obj.name = "G"
}
var person = new Object();
setName(person);
alert(person.name)
检测类型
typeof 操作符是确定一个变量是字符串,数字,布尔值,还是undefined,如果变量的值是一个对象或null,则typeof会返回object;
instanceof检测引用类型是一个什么类型的对象;
如果变量是给定的引用类型的实例,那个instanceof操作符就会返回true;如果是基本类型会返回false;
所有引用类型的值都是Object的实例
执行环境与作用域
延长作用域链
两种方法:try-catch语句中的catch块;with语句;
使用 try…catch…finally 执行例外处理
在JavaScript中,我们使用try…catch…finally语句来执行例外处理,即通过它来捕捉错误发生后导致的例外或者执行throw语句产生的例外。它的基本语法如下:
try {
// 此处是可能产生例外的语句
} catch(error) {
// 此处是负责例外处理的语句
} finally {
// 此处是出口语句
// 此处是可能产生例外的语句
} catch(error) {
// 此处是负责例外处理的语句
} finally {
// 此处是出口语句
}
3)举例
<script language="javascript">
<!--
function Lakers() {
this.name = "kobe bryant";
this.age = "28";
this.gender = "boy";
}
var people=new Lakers();
with(people)
{
var str = "姓名: " + name + "<br>";
str += "年龄:" + age + "<br>";
str += "性别:" + gender;
document.write(str);
}
//-->
<script language="javascript">
<!--
function Lakers() {
this.name = "kobe bryant";
this.age = "28";
this.gender = "boy";
}
var people=new Lakers();
with(people)
{
var str = "姓名: " + name + "<br>";
str += "年龄:" + age + "<br>";
str += "性别:" + gender;
document.write(str);
}
//-->
</script>
没有块级作用域
if,for,while,语句中声明的变量会将变量添加到当前的执行环境
for(var i = 0;i<10;i++){
var a=1
}
alert(a);
1.使用var声明的变量会自动添加到 最接近的环境中
2.查询标识符:从作用域链的前端开始,向上逐级查询直到找到需要的标识符(变量)
最新文章
- 判断是否为mac电脑 、还是windows操作系统
- SQL Server2016 新功能实时查询统计信息
- storm基础系列之一----storm并发度概念剖析
- 【Solr】索引库查询界面详解
- IIS7 IIS7.5 配置备份
- android中的EditView控件
- WAF SSI
- Objective-C 中的方法回掉
- (转)IOS中获取各种文件的目录路径的方法
- PHP - php汉字转拼音
- Controller.RedirectToAction 方法
- C# 截取图片区域,并返回所截取的图片
- 移动端(H5)弹框组件--简单--实用--不依赖jQuery
- ZooKeeper之(五)集群管理
- 01_MUI之Boilerplate中:HTML5示例,动态组件,自定义字体示例,自定义字体示例,图标字体示例
- leetCode83. 删除排序链表中的重复元素
- 斯坦福大学公开课机器学习:advice for applying machine learning | learning curves (改进学习算法:高偏差和高方差与学习曲线的关系)
- Consul部署架构
- VS2015 使用 Visual Studio Emulator For Android 调试无法命中断点的解决办法?
- 微信开发 invalid openid