详解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 相关文章推荐
参考:关于Javascript中实现暂停的几篇文章
Mar 04 Javascript
检测是否已安装 .NET Framework 3.5的js脚本
Feb 14 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
Aug 14 Javascript
JavaScript中的console.trace()函数介绍
Dec 29 Javascript
Bootstrap文件上传组件之bootstrap fileinput
Nov 25 Javascript
原生JS实现图片翻书效果
Feb 16 Javascript
使用原生js写ajax实例(推荐)
May 31 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
Jul 03 Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 Javascript
基于js Canvas实现二次贝塞尔曲线
Dec 25 Javascript
怎样在vue项目下添加ESLint的方法
May 16 Javascript
详解vue高级特性
Jun 09 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生成静态页的实现方法
2013/05/10 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
2021/02/26 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
防止文件缓存的js代码
2013/01/10 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
easyui validatebox验证
2016/04/29 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
JavaScript实现HSL拾色器
2020/05/21 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
使用Python进行目录的对比方法
2018/11/01 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
Django中提示消息messages的设置方式
2019/11/15 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
总务岗位职责
2013/11/19 职场文书
教师旷工检讨书
2014/01/18 职场文书
装修施工安全责任书
2014/07/24 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
聘任书的格式及模板
2019/10/28 职场文书
2019年冬至:天冷暖人心的问候祝福语大全
2019/12/20 职场文书
36个正则表达式(开发效率提高80%)
2021/11/17 Javascript
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技