首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript-原始引用

一、原始引用的概念 在 ECMAScript 中,变量可以存在两种类型的,即原始引用。...二、栈堆 2.1 原始存储在栈中 为变量赋值时,ECMAScript 的解释程序必须判断该原始类型,还是引用类型。...三、原始引用的不同 3.1 赋值方式 3.2 是否可变 3.3 比较方式不同 四、赋值方式是否可变 4.1 原始是以的拷贝方式赋值,是不可变的。...4.4 说明 (1)原始赋值 → 其实是将拷贝一份并赋值给新的变量,这个就是副本,他原始是互相独立的,改变其中一个不会影响到其他的。...五、比较方式不同 5.1 原始的比较是 的比较 5.2 引用的比较是 引用 的比较 5.3 Example ? 5.4 说明 (1)原始 a b 的数据类型不同,但也可以进行的比较。

1K51
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    原始复杂

    作者:汪娇娇 日期:2016.10.12 一、原始 1、定义:本身很简单,不能由其他组成的,例如5、“foo”、true、nullundefined等,因为它们是不可细化的。...从逻辑上说,如果将一个包含数值10的变量另一个包含数值10的变量进行比较,JS认为它们是相等的,因为10与10是相等的(即10===10),原始字符串的比较也是如此。...下面的例子顺带比较下复杂原始的区别: <!...console.log(num3===num4);//输出true,因为复杂对象采用引用比较(即:地址比较),而不是比较 二、复杂 1、定义:可以包含一个或多个原始或复杂的类型...例如原生对象构造函数Object()、Array()、Function()等,如下创建了一个包含所有原始的对象一个包含所有原始的数组。 <!

    56520

    原始复杂

    作者:汪娇娇 日期:2016.10.12 一、原始 1、定义:本身很简单,不能由其他组成的,例如5、“foo”、true、nullundefined等,因为它们是不可细化的。...从逻辑上说,如果将一个包含数值10的变量另一个包含数值10的变量进行比较,JS认为它们是相等的,因为10与10是相等的(即10===10),原始字符串的比较也是如此。...下面的例子顺带比较下复杂原始的区别: <!...console.log(num3===num4);//输出true,因为复杂对象采用引用比较(即:地址比较),而不是比较 二、复杂 1、定义:可以包含一个或多个原始或复杂的类型...例如原生对象构造函数Object()、Array()、Function()等,如下创建了一个包含所有原始的对象一个包含所有原始的数组。 <!

    93560

    ES6 学习笔记(三)原始引用

    1.1、 ES的6种原始: Undefined、Null、Boolean、Number、String、Symbol 1.2、 保存原始的变量是按访问,操作存储在变量内存中的实际 2、引用,...表示有多个原始或其他引用)构成的对象 2.1、 ES不允许直接访问对象的内存空间。...2.2、 实际操作对象时,访问的是保存对象的内存地址,即该对象的引用。 3、动态属性 3.1、 原始是不可改变的。 3.2、 引用(对象)可以随时添加、修改删除它的属性方法。...4.2、 原始引用本质上没有区别,都是将一个变量中保存的信息复制给另一个变量,如: let a = 100; let b = a; b++; console.log(a, b); 运行结果:...为了方便操作原始,ES提供了3中特殊的引用类型:Boolean、NumberString。

    29420

    JS对象到原始的转换

    JS对象到原始转换的复杂性 主要由于某些对象类型存在不止一种原始的表示 对象到原始转换的三种基本算法 在解释三种算法前需要了解toString valueOf这两个方法 toString...toString方法返回一个人类友好(且JS可解析)的日期时间字符串 RegExp类定义的toString方法将RegExp对象转换为一个看起来像RegExp字面量的字符串 valueOf 把对象转换为代表对象原始...toString方法 方法有定义且返回原始,则使用该原始(即使这个不是字符串) 不存在或者存在但返回对象,则尝试使用valueOf方法 方法存在且返回原始,则使用该。...) 取决于被转换对象的类 如果是Date对象,则使用偏字符串算法 其他类型使用偏数值算法 JS内置类型除了Date类都实现了偏数值算法;Date类实现了偏字符串算法 对象转换为布尔 所有对象都转换为...= 操作符 允许类型转换的宽松方式执行相等不相等测试 如果一个操作数是对象 另一个是原始,则使用无偏好算法转换为原始 再比较 >= 关系操作符 既可比较数值也可比较字符串 如果有一个操作数是对象

    4.3K30

    、左引用,右,右引用

    c++11中引入了右引用移动语义,可以避免无谓的复制,提高程序性能,用的不多,每次看过了就忘了,整理下; 1、左: 左是指表达式结束后依然存在的持久化对象; 右是指表达式结束时就不再存在的临时对象...; 比方: int i=0;// i是左, 0是右 2、左引用: c++98中的引用很常见了,就是给变量取了个别名,在c++11中,因为增加了右引用(rvalue reference)的概念,所以...1是右,不能够使用左引用 3、右引用,c++11中的右引用使用的符号是&&,如: int&& a = 1; //实质上就是将不具名(匿名)变量取了个别名 int b = 1; int && c...6、std::movestd::forward的区别: std::move执行一个无条件的转化到右。...参考:[c++11]我理解的右引用、移动语义完美转发 https://www.jianshu.com/p/d19fc8447eaa C++ 11 左,右,左引用,右引用,std::move

    78710

    Java-传递引用

    参考:https://mp.weixin.qq.com/s/Qp6Cc0mlRLnrToNy5-3zeg java的传递引用是一个普通但重要的内容,今天我们依次来了解一下。...因此可见: 对于引用数据类型的对象/数组,变量名存在栈中,变量值存储的是对象的地址,并不是对象的实际内容。 5. 传递引用传递 5.1 终于说到重点了,开不开心。...先来看一下传递的定义 传递: 在方法被调用时,实参通过形参把它的内容副本传入方法内部,此时形参接收到的内容是实参的一个拷贝,因此在方法内对形参的任何操作,都仅仅是对这个副本的操作,不影响原始的内容...5.2.看一眼引用传递 引用传递: ”引用”也就是指向真实内容的地址,在方法调用时,实参的地址通过方法调用被传递给相应的形参,在方法体内,形参实参指向同一个内存地址,对形参的操作会影响的真实内容...只是在传递过程中: 如果是对基本数据类型的数据进行操作,由于原始内容副本都是存储实际,并且是在不同的栈区,因此形参的操作,不影响原始内容。

    1.7K30

    、左引用与右引用、移动语句(2)「建议收藏」

    区分清楚了左与右,我们再来看看左引用。左引用根据其修饰符的不同,可以分为非·常量左引用常量左引用。 左引用、右引用引用就是对一个左进行引用的类型。...右引用就是对一个右进行引用的类型,事实上,由于右通常不具有名字,我们也只能通过引用的方式找到它的存在。 右引用引用都是属于引用类型。...如果允许绑定到常量左常量右,则非常量左引用可以用于修改常量左常量右,这明显违反了其常量的含义。...C++ 11中用&表示左引用,用&&表示右引用,如: int &&a = 10; 右引用根据其修饰符的不同,也可以分为非常量右引用常量右引用。...常量右引用可以绑定到非常量右常量右,不能绑定到非常量左常量左(理由同上)。 有了右引用的概念,我们就可以用它来实现下面的CMyString类。

    2.6K20

    引用与右引用

    ---- 引言:如何区分左 ①左是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址+可以对它赋值,左可以出现赋值符号的左边,右不能出现在赋值符号左边。...右引用就是对右引用,给右取别名。...return ret; //由于ret是在函数内部定义,出了函数域将会销毁,所以不能返回左引用 } 二、右引用 1、右引用使用场景意义 ①移动返回 注:当需要用右引用引用一个左时,可以通过...int&& rvalueRefFunc() { int a = 1; return std::move(a);//a返回后出了函数域被销毁 } int main() { // 利用右引用...// 模板的万能引用只是提供了能够接收同时接收左引用引用的能力, // 但是引用类型的唯一作用就是限制了接收的类型,后续使用中都退化成了左, // 我们希望能够在传递过程中保持它的左或者右的属性

    43720

    复杂vs原始&&内存空间

    事实上,原始存储在栈内存中,按来访问。复杂引用类型)在堆内存里面,按引用地址访问;然后我们会想到局部变量全局变量在内存中的存储:下面是我在一个群中给一个同行的回答(前辈们莫见笑) ?...这里的重点是,原始是作为不可细化的进行存储操作的,引用他们会转移其:这里的意思也就是原始类型)在内存中每一个都会存储在对应的变量的中去,也就是一个真实的”复制”。   ...这里的重点是,在进行比较时,原始会去检查表示的是否相等,这里我们要特别复杂进行比较(因为复杂不会去比较是否相等,而是比较引用地址是否相同) 3、原始(String,Number,Boolean...相比简单的原始原始不能表示复杂,而复杂可以封装任意的JavaScript 5、如何存储或复制复杂 复杂是通过引用来进行存储操作的,这就回到了开始那个问题的图二,理解这一点非常重要。...写在后面 相信到这里我们对js中的原始、复杂、以及他们的特性、在内存中的存储有了比较深入的理解,那么让我们开始准确我们的JavaScript世界观系列,因为我从高中毕业后接触前端,对原生的热爱程度远远大于

    85570

    传递引用传递

    引用传递一位置当一个参数传递给一个函数的时候,函数接收的是原始的内存地址,而不是的副本。因此,如果函数修改了该参数,调用代码中的原始也随之改变。   ...1.对象是按照引用传递;   2.java中仅存在一种参数传递机制,即按传递;   3.按传递意味着当一个参数传递给一个函数的时候,函数接收的是原始的一个副本;   4.按引用传递意味着当将一个参数传递给一个函数的时候...虽然这里看做的是“引用传递”, 但引用传递其实也是传,因为对象就是一个指针,这个赋值是在指针之间的赋值,因此在java中将它称为传引用。...= 5; int i2 = i1; i2 = 6; System.out.println(i1); } } 输出结果: 5   由于i1i2是原始数据类型,而原始数据类型是按传递,...所以修改的其实只是原始的一个副本,原始并不会改变。

    1.6K60

    【说站】Js传递引用传递的不同

    Js传递引用传递的不同 概念不同 1、传递为单向传递,只能由实参传递给形参,形参无法改变实参的。 2、引用类型传递可以通过改变形参而改变实参。...只要任何一个变量指向同一个空间,那么该变量都可以去操作该空间的。 传递的数据类型 3、传递传递的是一个引用传递传递的是一个对象。...(1)传递 var a = 1; function fn(a){ a ++; return a; } a = 1; console.log(fn(a)); console.log(a); (2)引用传递...为新创建的对象添加属性 } var obj = new Object(); fn(obj); console.log(Orville's Ideas and Interests); //obj为外部创建的对象所以输出为...“abc” 以上就是Js传递引用传递的不同,希望对大家有所帮助。

    2.4K21

    js中的类型引用类型的区别

    js中的类型引用类型的区别 1.JavaScript中的变量类型有哪些?...) 2.类型引用类型的区别 (1)类型: 1、占用空间固定,保存在栈中(当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将自然销毁了...几方面的区别举例: (1)动态的属性: 定义基本类型引用类型的方式是类似的。但是,当这个保存到变量中以后,对不同类型可以执行的操作则大相径庭。...对于引用类型的,我们可以为其添加属性方法,也可以改变删除其属性方法,但是,我们不能给基本类型的添加属性,只能给引用类型动态地添加属性,以便将来使用。...但是,当接下来再访问 person.name 时,显示的仍然是"Nicholas"。 这说明即使在函数内部修改了参数的,但原始引用仍然保持未变。

    3.5K20

    原生JS | 类型与引用类型变量

    HTML5学堂-码匠:在JavaScript中,存在着两种不同的变量类型,一种是类型变量,一种是引用类型变量。...其中数组、对象、函数都属于引用类型变量,数值、布尔、null、undefined、字符串属于类型变量,不同类型变量在参数传递方面有不同的运行机制。...运行后,控制台的打印结果为: HTML5学堂 码匠 实例2运行后,控制台的打印结果为: 码匠 码匠 两种实例不同结果的“根源” 导致这两种不同结果的根源在于JavaScript中的变量类型分为两大类:类型引用类型...欢迎沟通交流~~~HTML5学堂(码匠) 类型变量 类型包括:数值、布尔、null、undefined、字符串。...引用类型变量 引用类型包括:对象、数组、函数。 引用类型变量的交换,并不会创建一个新的空间,而是让新变量之前的变量,同时指向一个原有空间(即同一个地址)。可以理解为C语言的指针。

    3.5K90

    java——传递引用传递

    传递 在方法被调用时,实参通过形参把它的内容副本传入方法内部,此时形参接收到的内容是实参的一个拷贝,因此在方法内对形参的任何操作,都仅仅是对这个副本的操作,不影响原始的内容。...ageweight的并没有发生变化,这是什么原因?...方法所在的栈帧中,而他们的是从aw的copy了一份副本而得,如图: ?...因此这两个ageweight对应的内容不是同一个,在valueCross方法中修改的只是自己栈中的内容,并没有修改main方法栈中的内容 引用传递 ”引用”也就是指向真实内容的地址,在方法调用时,...xo2222这块内存空间的,不会改变xo3333的,所以测试结果2中的name没有发生变化 引用传递本质上就是传递,将引用变量的传递给形参,因为引用变量的存放的是地址,所以当地址传递给形参后

    1.2K20
    领券