JavaScript变量可能包含两种不同数据类型的值:基本类型值引用类型值。基本类型值指的是简单的数据段,而引用类型值是指那些可能由多个值构成的对象。

在将一个值赋给变量时,解析器必须确定这个值是基本类型值还是引用类型值。

下面来看看它们具体有那些差别:

(1)引用类型的值,可以添加或删除属性和方法,而基本类型的值不能够改变属性。

基本类型
var str="abc";
str.color="red";
str.color;//undefined 引用类型
var str=new String("123");
str.color="red";
str.color;//"red",

(2)复制变量值不一样

基本类型值存储在栈(stack)中,它们的值直接存储在变量访问的位置。如果从一个变量向另外一个变量复制基本类型的值,会在变量上创造一个新值,然后把该值分配到新的位置上

基本类型
var num1=1;
var num2=num1;
num1;//1
num2; //1 num1=2;改变num1的值为2
num1;//2,结果num1为2
num2;//1,num2还是1没变

引用类型值存储在堆(heap)中,存储在变量处的值是一个指针(point),指向存储对象的内存处。当从一个变量向另外一个变量复制的时候,因为值的副本其实是一个指针,所以两个变量将引用一个对象,改变其中一个变量,会影响另外一个变量。

引用类型
var a=new Object();
var b=a;
a.name="a";//"a"
b.name;//"a" a.name="new";//"new",改变a.name为new后
b.name;//"new",查看b.name的值也变成了new了

理解JavaScript变量值的更多相关文章

  1. C#webbrowser控件技巧(取得javascript变量值,禁止显示脚本错误)

    C#中的webbrowser控件比较好用. 下面本人搜索整理的几个小技巧. 1. 从C#中取得javascript的变量值. using mshtml;using System.Reflection; ...

  2. JavaScript交换两个变量值的七种解决方案

    前言 这篇文章总结了七种办法来交换a和b的变量值 1 2 var a = 123; var b = 456; 交换变量值方案一 最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太l ...

  3. JavaScript高级程序设计(复制变量值、传递参数)

    复制变量值 一个变量向另一个变量复制基本类型值和引用类型值时,是存在不同的. 一个变量向另一个变量复制基本类型的值,会在变量的对象上创建一个新值,然后把该值复制到为新变量分配的位置上. var num ...

  4. JavaScript判断变量值简单的方法

    今天在看一个动态web表单设计器的时候发现项目中的 一个写法 function sum_total(v){ if (!v) { v= 0; } } !v  这是什么写法?不过可以肯定的是,这是一种判断 ...

  5. 深入理解JavaScript的闭包特性如何给循环中的对象添加事件

    初学者经常碰到的,即获取HTML元素集合,循环给元素添加事件.在事件响应函数中(event handler)获取对应的索引.但每次获取的都是最后一次循环的索引.原因是初学者并未理解JavaScript ...

  6. 图说js中的this——深入理解javascript中this指针

    没搞错吧!js写了那么多年,this还是会搞错!没搞错,javascript就是回搞错! ………… 文章来源自——周陆军的个人网站:http://zhoulujun.cn/zhoulujun/html ...

  7. 【转】深入理解JavaScript闭包闭包(closure) (closure)

    一.什么是闭包?"官方"的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分.相信很少有人能直接看懂这句话,因为他描述 ...

  8. 如何理解javascript closure ?

    接触过javascript的人应该听过闭包(closure),有一种观点认为是闭包赋予了javascript的强大能力,也赋予了它具备OOP的特征.既然javascript closure如此重要,那 ...

  9. 全面理解JavaScript中的闭包的含义及用法

    1.什么是闭包 闭包:闭包就是能够读取其他函数内部变量的函数;闭包简单理解成“定义在一个函数内部的函数”. 闭包的形式:即内部函数能够使用它所在级别的外部函数的参数,属性或者内部函数等,并且能在包含它 ...

随机推荐

  1. .NET 中使用阿里云短信的 API 接口

    小弟初来乍到,这也是我的第一篇文章,写的不好的地方还望指正.谢谢各位! 引言 短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力,支持快速发送短信验证码.短信 ...

  2. 01.MD5加密

    namespace _01.MD5加密 { class Program { static void Main(string[] args) { //MD5加密就是给想要的密码或者其它字符加密 //如果 ...

  3. python4

    列表的常用操作     创建列表         1.创建空列表             列表变量 = []         2.创建单个数据的列表             列表变量 = [值]    ...

  4. linux设置静态获取ip

    vsphere client 创建虚拟机后,默认是动态获取ip ,如果想要改为静态ip: 修改网卡eth0 (不一定每个人都是eth0,比如有的是ens160) vim /etc/sysconfig/ ...

  5. Algorithm——最长公共前缀

    一.问题 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...

  6. css3之背景定位

    属性: background-position: left top || left bottom || right top || right bottom || center center || 像素 ...

  7. Visual Studio Code使用Open In Browser打开的是记事本

    今天在家里学习前端开发,发现Visual Studio Code使用Open In Browser插件快速打开浏览器有问题,打开的是操作系统的记事本. 后来发现电脑的html文件默打开方式被改成了记事 ...

  8. 佣金百万so easy!阿里云推广联盟喊你来赚钱

    淘客速来,佣金百万so easy!阿里云推广联盟喊你来赚钱 阿里云CPS推广阶梯返佣活动火热升级! 坐享15%佣金!一笔成交即有奖励!最高奖励2000元! 超高客单价.高转化率.高佣金! 招募淘客推广 ...

  9. tensorflow: a Implementation of rotation ops (旋转的函数实现方法)

    tensorflow 旋转矩阵的函数实现方法 关键字: rot90, tensorflow 1. 背景 在做数据增强的操作过程中, 很多情况需要对图像旋转和平移等操作, 针对一些特殊的卷积(garbo ...

  10. 指针的引用-ZZ

    原文出处 复习数据结构的时候看到指针的引用,两年前学的细节确实有点想不起来,于是查了一下网上的资料,并且自己实践了一下,总结了一句话就是: 指针作为参数传给函数,函数中的操作可以改变指针所指向的对象和 ...