首页
学习
活动
专区
圈层
工具
发布

JavaScript-原始值和引用值

一、原始值和引用值的概念 在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。...三、原始值和引用值的不同 3.1 赋值方式 3.2 值是否可变 3.3 比较方式不同 四、赋值方式和值是否可变 4.1 原始值是以值的拷贝方式赋值,值是不可变的。...4.4 说明 (1)原始值赋值 → 其实是将值拷贝一份并赋值给新的变量,这个值就是副本,他和原始值是互相独立的,改变其中一个值不会影响到其他的值。...(2)引用值赋值 → 当一个引用类型,例如一个对象,使用 = 将其赋值给另一个变量,实际上是其对象的地址引用赋值给新的变量,这两个变量都指向同一个地址引用,他们有相同的地址。...五、比较方式不同 5.1 原始值的比较是 值 的比较 5.2 引用值的比较是 引用 的比较 5.3 Example ? 5.4 说明 (1)原始值 a 和 b 的数据类型不同,但也可以进行值的比较。

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

    Javascript 判断假值的方法

    概念:什么叫假值? 在JavaScript中,false、null、0、”“、undefined 和 NaN被称为假值。 Boolean 对象是一个布尔值的对象包装器。...var x = new Boolean(); 如果Boolean构造函数的参数不是一个布尔值,则该参数会被转换成一个布尔值....如果参数是 0, -0, null, false, NaN, undefined, 或者空字符串 (“”),生成的Boolean对象的值为false....其他任何值,包括任何对象或者字符串”false”, 都会创建一个值为true的Boolean对象. 不要将原始值为true/false,和值为true/false的Boolean对象相混淆....现在我们可以利用Boolean对象的构造特性,判断值是否为假值。 讲一个非布尔值转化成布尔值,需要直接使用Boolean函数,而不能通过新建Boolean对象。

    1.6K20

    JavaScript 交换值的奇思妙想

    ,先求出两个数的和,那么第二个数要换友第一个数的的值就是总的和减去第二个,也就是代码中的 num2 = num1-num2,同理,第一个数要换成第二个数的值,就是总的和减去第一个数的值,现在第一个数已经是赋值给第二个数...就是,如果有交换值有 0 就会得到意想不到的问题 ?: swapWithMulDiv(2.34,0) // 2.34 0 // NaN NaN 我们的值没有交换,而是得到一个奇怪的NaN。...JavaScript 没有一个操作符来执行XNOR,所以我们使用非与XOR操作符来达到类似的效果。...使用解构表达式 这是ES6的一个特性,也是最简单的,我们可以像这样交换值 ?...return num2; })(num2, num2=num1) console.log(num1,num2) } swapWithIIFE(2.3,3.4) 在上面的示例中,我们立即调用第4行上的一个函数

    62740

    JavaScript 入门(上)

    JavaScript和Java虽然名字相似,但是本质上是不同的。...(1)JavaScript往往都是在网页中使用,而Java却可以在软件、网页、手机App等各个领域中使用; (2)Java是一门面向对象的语言,而从本质上讲,JavaScript更像是一门函数式编程语言...常量主要用于为程序提供固定和精确的值,包括数值和字符串,如数字、逻辑值真(true)、逻辑值假(false)等都是常量。 4、变量 变量,顾名思义,就是指在程序运行过程中,其值是可以改变的。...例如:typeof(1)返回值是number,typeof("javascript")返回值是string。 五、表达式 表达式是一个语句的集合,计算结果是个单一值。...有可能这些技巧一时半会你用不上,但是学习知识有一种说法是:你只有接触了某个知识点,即使将来你已经忘记了这个知识点具体是怎样的了,不过你却能想到用这么一个知识去帮你解决某些问题。

    83730

    JavaScript事件(上)

    在JavaScript中,事件往往是页面的一些动作引起的,例如当用户按下鼠标或者提交表单,甚至在页面移动鼠标时,事件都会出现。...二、JavaScript事件 在JavaScript中,调用事件的方式共有2种: (1)在script标签中调用; 在script标签中调用事件,也就是在</script标签内部调用事件...(2)在元素中调用; 在元素事件中引入JS,就是指在元素的某一个属性中直接编写JavaScript程序或调用JavaScript函数,这个属性指的是元素的“事件属性”。...举例1:(在元素事件属性中直接编写JavaScript) JavaScript元素中调用的。 这2种调用JavaScript事件的方式,大家刚刚开始看不理解没关系,我们只是给大家说个语法,留个印象。在接下来的章节中,我们会经常接触。

    56020

    JavaScript真假值知多少

    JavaScript变量是弱类型并且语言本身不关心一个值如何声明和改变。...因为在比较前JavaScript会把每个值转换成字符串形式: // all true 1 == '1'; 1 == [1]; '1' == [1]; 当用`===`(全等)比较的时候,结果都是`false...`,因为值的类型被考虑在内: // all false 1 === '1'; 1 === [1]; '1' === [1]; 在JavaScript里,会将值设定为六种原始数据类型其中的一种: · Undefined.... // 如果x和y完全相同执行 // 包括有一个NaN或者都是NaN 结论 真假值允许你写出简单的JavaScript条件判断和三元运算。然而,我们总是得考虑这些边界情况。...往期精选文章 一小时内搭建一个全栈Web应用框架 全栈工程师技能大全 一个治愈JavaScript疲劳的学习计划 推翻JavaScript中的三座大山:作用域篇 掌握Chrome开发工具:新一代前端开发技术

    95220

    JavaScript中{}++{}返回值

    简介 这是写上一篇博客,遇到的问题。点击here移步上一篇博客。 详解 上一篇博客说,除了两个数值相加,其他类型相加都会转成字符串相加。...那么先控制台输出一下{}+[]和[]+{}看一下结果,直接上图: 一个返回0,一个返回'[object Object]',互换位置后返回的结果不一样。...应该是{}+[]中的{}没有被解释器解释成空对象,又发现+[]返回的是0。所以{}在前面应该是被解释成代码块,而不是空对象。...同时也是因为运算是从左到右解释,+加号是连接两个变量的,所以{}放在+号后面就会被解释成空对象变量。同时也因为+号可以单独放在变量前使用,意为返回这个变量的数值,看上一篇博客。...总结 除了两个数值相加,其他类型相加都会转成字符串相加 但是 + 号前面是一个直接使用的{}空对象,就会把空对象解释成代码块标志。例如{}+

    2.1K30

    高并发 Javascript: 存在的!(上)

    而且,这也意味着,在和常规 Javascript 属性一块使用的时候,目前采用整数值的 Atomics 方法(这是为了在有类型的数组中存储和比较元素),现在将会能够使用任何 Javascript 值。...与 DOM 进行交互 对于所有的 Javascript 来扩展高并发会很难;将其扩展到所有 DOM 上难度更甚。...在 Javascript 上,这些才能正常运行。 如 Javascript 的实现一样,这些语言使用内联缓存技术(inline caching) 来加速动态操作。...Java 和 .Net 中的指针值是储存对象数据的连续内存切片,它只会做一些地址上的算术处理(比如添加一个偏移量),并且只让单个内存指令读写某个字段。...每一个位置可能存储一个带标签的 Javascript 值,这个值可以是数字、指向另一个 cell 的指针(代表字符串、symbol、或对象),或是一个特殊的值( true、 false、 null或者

    1.3K20

    JavaScript 是如何工作的:JavaScript 的共享传递和按值传递

    按值传递 和 引用传递参数 主要区别简单可以说: 按值传递:在函数里面改变传递的值不会影响到外面 引用传递:在函数里面改变传递的值会影响到外面 但答案是 JavaScript 对所有数据类型都使用按值传递...它对数组和对象使用按值传递,但这是在的共享传参或拷贝的引用中使用的按值传参。这些说有些抽象,先来几个例子,接着,我们将研究JavaScript在 函数执行期间的内存模型,以了解实际发生了什么。...按值传参 在 JavaScript 中,原始类型的数据是按值传参;对象类型是跟Java一样,拷贝了原来对象的一份引用,对这个引用进行操作。...但是 JavaScript 中就像前面所说,在JS 中,string 就是一种原始类型数据而不是对象类,所以是按值传递,所以在 setNewString 中更改 str 的值不会影响到外面。...值被复制到 eax 中,30 被复制到 eax 指向的内存中。任何寄存器上的花括号 [] 都告诉 CPU 不要使用寄存器中找到的值,而是获取与其值对应的内存地址号的值。

    5K41

    Javascript 值和引用之间的区别

    上已经收录,更多往期高赞文章的分类,也整理了很多我的文档,和教程资料。欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 在JavaScript中,可以通过值和引用传递。...两者之间的主要区别是,按值传递发生在赋值基本类型的时候,而赋值对象时按引用传递。接下来,跟着智哥,来详细看看。 1.理解基本类型和对象 JavaScript提供了2种数据类型:基本类型和对象。...2.值 按值传递的简单规则是 JS 中的所有基本类型都按值传递,就这么简单。 按值传递意味着每次将值赋给变量时,都会创建该值的副本,每一次哦。 ?...注意:为简单起见,我说变量包含对对象的引用。 但是严格说来,JavaScript中的变量包含的值是对对象的引用。 4.值的比较和引用的比较 在比较对象时,理解值和引用之间的区别非常重要。...5.总结 在JavaScript中,原始类型作为值传递:意味着每次分配值时,都会创建该值的副本。 另一方面,对象(包括普通对象,数组,函数,类实例)是引用。

    1.6K20

    使用 Set 检测 JavaScript 对象值的变化

    JavaScript集合是一组有序的唯一值,对于消除重复值非常有帮助。在处理离散数据时,集合是必不可少的。...当使用该数组初始化一个新的集合时,它返回了包含7个不同值的集合。就是这样工作的。您可以在MDN上阅读更多有关集合的信息。...let user = { name: "Ygritte Snow", married: true, home: "Winterfell" };但是我们的JavaScript如何检测到对象文字的值已更改呢...然后我们使用Set的size属性比较了结婚前集合(结婚前对象的值)和合并集合(结婚前和结婚后对象的值)。通常我们将对象文字的值转换为数组,然后将数组转换为集合。...注:大多数对象文字都有由数据库自动生成的动态属性,例如updated_at和created_at,这些属性的值将导致对象已被更新,即使实际上并未更改。

    1.1K00

    如何删除 JavaScript 数组中的虚值

    JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,比如:在条件语句或者循环语句中。...falsy 有时写作 falsey 在 JavaScript 中有很多方法可以从数组中删除元素,但是从数组中删除所有虚值的最简单方法是什么?...JavaScript 中的虚值是 false、 null、 0、 ""、 undefined 和 NaN。 提示:尝试将每个值转换为布尔值。...freeCodeCamp 上的好心人告诉我们,JavaScript 中的虚值是 false、 null、 0、 ""、 undefined 和 NaN。 他们也给了我们一个重要的提示!...JavaScript 为我们提供了将一种数据类型转换为另一种的有用函数, String()转换为字符串,Number() 转换为数字,Boolean() 转换为布尔值。

    15K20
    领券