详解JavaScript 的变量


Posted in Javascript onMarch 08, 2019

基本类型和引用类型的值
ECMAScript变量一般有两种数据类型的值:基本类型和引用类型。

  • 基本类型: 简单的数据段:Undefined, Null, Boolean, Number, String
  • 引用类型:多个值构成的对象;

1. 动态的属性

定义两者的值:创建一个变量并为其变量赋值;

执行两者的值:

  • 引用类型:可以添加、删除属性和方法;
  • 基本类型:不能添加、删除属性和方法;

比如:引用类型 a,可以添加属性 name age

var a = new Object();
a.name = "杨子龙";
a.age = 24;
console.log(a.name);      //杨子龙

基本类型 name 无法添加属性 age

var name = "杨子龙";
name.age = 24;
console.log(name.age);     //undefined

代码中可知:只能给引用类型值动态地添加属性,以便将来使用。

2. 赋值变量值

从一个变量向另一个变量复制基本类型值和引用类型值时:

基本类型:在变量对象上创建一个新值,并将其值复制给新变量分配的位置上;(完全独立的两个变量)

例如

var a = 111;
 var b = a;
 console.log(b);     //111

代码中可知:变量b的值只是变量a的值的一个副本,两者的值111是完全独立的。

引用类型:将存储在变量对象中的值复制一份放到为新变量分配的空间中;(引用同一个对象的两个变量)

引用类型的值的副本实际是一个指针,指向存储在堆中的一个对象。

var obj1 = new Object;
var obj2 = obj1;
obj1.name = "杨子龙";
console.log(obj2,name);     // Object { name="杨子龙"} 杨子龙

代码中可知:obj1和obj2都指向同一个对象Object;所以,为obj1添加的name属性,通过obj2也可以访问的到。

3. 传递参数

我们都知道基本类型是按值访问的,因为可以访问保存在变量中的实际的值。

所有函数的参数都是按值传递的。

基本类型:基本类型值的传递如同基本类型变量的复制一样;

在向参数传递值,被传递的值会被复制给一个局部变量(命名参数),因此这个局部变量的变化不会反映在函数的外部。
例如:

function fn(num) {
 num += 10;
 return num;
}
var a = 10;
var result = fn(a);
console.log(result);  //20
console.log(a);    //10

代码中可知:参数num和变量a互不相识,只是有着相同的值而已,用完之后,你还是你,我还是我,互不干政。
引用类型:引用类型的传递如同引用类型变量的复制一样;
在向参数传递值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。
例如:

function fn(obj) {
 obj.name = '杨子龙';
}
var person = new Object();
fn(person);
console.log(person.name);   //杨子龙

代码中可知:在这个函数内部,参数obj和变量person引用的是同一个对象Object,所以,你不动我也不动,你动我也动,你中有我,我中有你,情义绵绵,经久不息……
也就是说:即使变量person是按值传递的,但是参数obj(想象成局部变量)还是会按引用来访问同一个对象。
访问变量有按值和按引用两种方式,参数只能按值传递。

4. 检测类型

基本类型:typeof
引用类型:instanceof(对象或null)
例如:

var a = 'Yang Zilong';
var b = 24;
var c = '';
var d = true;
var e;
var g = undefined;
var f = null; // 比较特殊
var h = new Object();

console.log(typeof a); //string
console.log(typeof b); //number 
console.log(typeof c); //string
console.log(typeof d); //boolean
console.log(typeof e); //undefined
console.log(typeof g); //undefined
console.log(typeof f); //object
console.log(typeof h); //object

所用引用类型的值都是Object的实例。
如下:

var person = new Object();
var num = [1,2, 3];
var pattern = /.at/i;
console.log(person instanceof Object);  //true
console.log(num instanceof Object);  //true
console.log(num instanceof Array);   //true
console.log(pattern instanceof Object); //true
console.log(pattern instanceof RegExp); //true

使用instanceof检测基本类型,会返回false,基本类型不是对象。

以上所述是小编给大家介绍的JavaScript 的变量详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript 特殊字符
Apr 05 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
用Javascript评估用户输入密码的强度实现代码
Nov 30 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
浅谈javascript中基本包装类型
Jun 03 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
jQuery实现判断控件是否显示的方法
Jan 11 Javascript
js正则表达式验证密码强度【推荐】
Mar 03 Javascript
ExtJs的Ext.Ajax.request实现waitMsg等待提示效果
Jun 14 Javascript
jquery中有哪些api jQuery主要API
Nov 20 jQuery
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
Oct 26 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
Mar 08 #Javascript
小程序测试后台服务的方法(ngrok)
Mar 08 #Javascript
详解JavaScript函数callee、call、apply的区别
Mar 08 #Javascript
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 #Javascript
详解小程序循环require之坑
Mar 08 #Javascript
详解js 创建对象的几种方法
Mar 08 #Javascript
浅谈Javascript常用正则表达式应用
Mar 08 #Javascript
You might like
自己动手,丰衣足食 - 短波框形天线制作
2021/03/01 无线电
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
AJAX在JQuery中的应用详解
2019/01/30 jQuery
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
2020/08/07 jQuery
Python实现过滤单个Android程序日志脚本分享
2015/01/16 Python
Python简单读取json文件功能示例
2017/11/30 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
多个应用共存的Django配置方法
2018/05/30 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
Python实现网站表单提交和模板
2019/01/15 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
Ray-Ban雷朋奥地利官网:全球领先的太阳眼镜品牌
2020/10/12 全球购物
师范生自我鉴定范文
2013/10/05 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
个人工作保证书
2015/02/28 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
Oracle中日期的使用方法实例
2022/07/07 Oracle
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL