详解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 相关文章推荐
DIY jquery plugin - tabs标签切换实现代码
Dec 11 Javascript
javascript中的parseInt和parseFloat区别
Jul 12 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
Dec 24 Javascript
jquery插件之定时查询待处理任务数量
May 01 Javascript
使用控制台破解百小度一个月只准改一次名字
Aug 13 Javascript
jquery带有索引按钮且自动轮播切换特效代码分享
Sep 15 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
Dec 12 Javascript
AngularJS中的缓存使用
Jan 11 Javascript
zTree jQuery 树插件的使用(实例讲解)
Sep 25 jQuery
安装Node.js并启动本地服务的操作教程
May 12 Javascript
详解如何更好的使用module vuex
Mar 27 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
Jun 18 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
php面向对象全攻略 (八)重载新的方法
2009/09/30 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
详谈js模块化规范
2017/07/07 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
使用 Javascript 实现浏览器推送提醒功能的示例
2017/11/03 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
2018/01/02 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
深入了解Django中间件及其方法
2019/07/26 Python
Django models.py应用实现过程详解
2019/07/29 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
自荐信怎么写好
2013/11/11 职场文书
军人违纪检讨书
2014/02/04 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
2019通用版新员工入职培训方案!
2019/07/11 职场文书
PC版《死亡搁浅导剪版》现已发售 展开全新的探险
2022/04/03 其他游戏