详解JavaScript的变量


Posted in Javascript onApril 04, 2019

基本类型和引用类型的值

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

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

1.动态的属性

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

执行两者的值:

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

比如:引用类型 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 = 'Wo Wei Qian Duan Dai Yan';
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

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

Javascript 相关文章推荐
学习YUI.Ext第五日--做拖放Darg&Drop
Mar 10 Javascript
疯狂Jquery第一天(Jquery学习笔记)
May 11 Javascript
利用js动态添加删除table行的示例代码
Dec 16 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
Nov 26 Javascript
Bootstrap每天必学之导航
Nov 26 Javascript
jquery实现下拉框功能效果【实例代码】
May 06 Javascript
JQuery.validationEngine表单验证插件(推荐)
Dec 10 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
Jan 23 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
Apr 21 Javascript
koa-passport实现本地验证的方法示例
Feb 20 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
Jun 05 Javascript
36个正则表达式(开发效率提高80%)
Nov 17 Javascript
vue elementUI table表格数据 滚动懒加载的实现方法
Apr 04 #Javascript
js 计算图片内点个数的示例代码
Apr 04 #Javascript
在node中使用jwt签发与验证token的方法
Apr 03 #Javascript
全面了解JavaScript的作用域链
Apr 03 #Javascript
从理论角度讨论JavaScript闭包
Apr 03 #Javascript
Node.js+Express+Mysql 实现增删改查
Apr 03 #Javascript
微信小程序配置服务器提示验证token失败的解决方法
Apr 03 #Javascript
You might like
ThinkPHP3.1查询语言详解
2014/06/19 PHP
10个简化PHP开发的工具
2014/12/25 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
CI(CodeIgniter)框架实现图片上传的方法
2017/03/24 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
javascript跑马灯悬停放大效果实现代码
2012/12/12 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
2020/08/21 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
详解Python locals()的陷阱
2019/03/26 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
斯凯奇美国官网:SKECHERS美国
2016/08/20 全球购物
乌克兰网上珠宝商店:GoldSoveren
2020/03/31 全球购物
物理学专业求职信
2014/07/04 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
新生开学寄语大全
2015/05/28 职场文书
2016年“世界环境日”校园广播稿
2015/12/18 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
python实现会员管理系统
2022/03/18 Python