精华内容
下载资源
问答
  • js中的原始值是什么

    千次阅读 2017-10-30 16:56:08
     原始值是固定而简单的值,是存放在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置. 引用值(reference value):  引用值则是比较大的对象,存放在堆(heap)中的对象,也就是说,存储在...
    在ECMAScript中,变量可以存放两种类型的值,即原始值和引用值.


    原始值(primitive value):


        原始值是固定而简单的值,是存放在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置.


    引用值(reference value):


        引用值则是比较大的对象,存放在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(pointer),指向存储对象的内存处.


        所有引用类型都集成自Object.




    有哪些类型是原始类型呢?


        原始类型(primitive type)有以下五种类型:Undefined,Null,Boolean,Number,String;


    原始值和对象的根本区别,原始值无法更改,数字,布尔值,字符串不可更改的。尽管字符串定义了许多方法,可以把字符串当做由字符构成的数组,但不管是slice(),substr(),substring()都是创建一个新的字符串。原始值是绝对不允许更改的。而对象确实可以更改的,就像数组。再者原始值之间的比较就是值得比较,只要是值相等,他们就可以用“==”判断,而对象是无法比较的,就算属性,方法完全一样,也是不相等的。对象的比较都是引用的比较,只有两个引用指向用一个对象时,他们才相等。


           对象转换原始值,所有的对象都继承了toString()和valueOf()方法。前者返回该对象的字符串,后者如果存在原始值,返回原始值,如果对象无法表示一个原始值,则返回该对象本身。


    valueOf()


    每个JavaScript固有对象的 valueOf 方法定义不同。
    对象 返回值
    Array 数组的元素被转换为字符串,这些字符串由逗号分隔,连接在一起。其操作与 Array.toString 和 Array.join 方法相同。
    Boolean Boolean 值。
    Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
    Function 函数本身。
    Number 数字值。
    Object 对象本身。这是默认情况。
    String 字符串值。


    Math 和 Error 对象没有 valueOf 方法。


    ------------------------------------------------------------------------------------------------------------------------------


    一般来说,对象到字符串的转换经过了如下步骤:


    1.如果对象具有toString()方法,则调用这个方法。如果它返回一个原始值,js将这个值转换成字符串,并返还这个字符串结果。


    2.如果对象没有toString()方法,或者这个方法并不返回一个原始值,那么js将调用valueOf()方法。


    3.否则,js无法从toString()或者valueOf()获得一个原始值,因此这时它将抛出一个类型错误异常。


     


    一般来说,对象到数字的转换过程中,js做了同样类似的事情,但这里它会首先尝试使用valueOf()方法:


    1.如果对象具有valueOf()方法,后者返回一个原始值,则js将这个原始值转换成数字,并返回这个数字。


    2.否则,如果对象具有toString()方法,后者返回一个原始值,则js将转换并返回。


    (首先js转换成相应的字符串原始值,再继续将这个原始值转换成相应的数字类型,再返回数字)


    3.否则,js抛出一个类型错误异常。


     


     对象通过toString或valueOf方法转换为原始值,JS语言核心的内置类首先尝试使用valueOf(),再尝试使用toString()


    一个小李子


    “1” == true;


    将返回true,转换形式是:true首先转换为1,然后再执行比较。接下来字符串“1”也转换成了数字1,相等,所以返回true


    另外如:


    var str = new String('hello,world');
    console.log(typeof str); //'object'
    console.log(typeof str.valueOf()); //'string'


     


    对于所有非日期对象来说,对象到原始值的转换基本上是对象到数字的转换


    (首先调用valueOf,但日期对象则使用对象到字符串的转换模式,但这种转换只执行一次就立即被使用,不会像上面所说的那般 先转成字符串再转成相应的数字类型)


    比如说,js中“+"运算符可以进行数学加法和字符串连接操作。


    如果他它的其中一个操作数是对象,则js将使用特殊的方法将对象转换成原始值,而不是使用其他算术运算符的方法执行对象到数字的转换,”==“运算符类似


    和”==“一样,”<"与其他运算符也会做对象到原始值的转换,但要出去日期对象的特殊情形


    “-“减号运算符把两个操作数都转换成数字


    比如:
    复制代码


    var now = new Date();
    console.log(now);  // Date {Sat Apr 04 2015 13:21:08 GMT+0800}
    console.log(typeof (now+1));  //string
    console.log((now+1));  //Sat Apr 04 2015 13:21:08 GMT+08001
    console.log(typeof (now-1));  //number
    console.log((now-1));  // 1428124868474
    console.log(now == now.toString());  //true
    console.log(now > now -1); //true


    复制代码


    var date = new Date(); 
    var date_string = date.toString(); 
    var date_value = date.valueOf(); 
    alert(date == date_string); //true
    alert(date == date_value); //false


     



    展开全文
  • JavaScript的原始值是指数字、字符串、布尔值、null和undefined。 JavaScript的数据类型分为两类:原始类型(primitive type)和对象类型(object type)。JavaScript中的原始类型包括数字、字符串和布尔值。对象...

    JavaScript的原始值是指数字、字符串、布尔值、null和undefined。

    JavaScript的数据类型分为两类:原始类型(primitive type)和对象类型(object type)。JavaScript中的原始类型包括数字、字符串和布尔值。对象类型包括对象、数组和函数。

    JavaScript中有两个特殊的原始值:null(空)和undefined(未定义),它们不是数字、字符串和布尔值。它们通常代表了各自特殊类型的唯一的成员。

    转载于:https://www.cnblogs.com/f6056/p/10856026.html

    展开全文
  • 原始值是不可能有属性和方法的,但str.abc=1 不报错,为什么呢?因为经历了一个包装类。(boolean,String,number的原始值都可以加属性和方法,因为有包装类,但是null和undefined加属性和方法会报错(例外)) 如:var...

    原始值是不可能有属性和方法的,但str.abc=1 不报错,为什么呢?因为经历了一个包装类。(boolean,String,number的原始值都可以加属性和方法,因为有包装类,但是null和undefined加属性和方法会报错(例外))
    如:var test='abc';
          test.length=2;
          console.log(test.length)
    test是原始值,不可能有属性和方法,但这里的test.length做了如下操作:String(test).length=2 然后马上销毁

    delete String(test).length
    当打印test.length时,再String(test).length。所以,此时,test.length=undefined

    展开全文
  • Js 中的原始值和引用值

    千次阅读 多人点赞 2018-07-11 14:39:19
    Js原始值 原始值即一些代表原始数据类型的值,也叫基本数据类型,首先说一下js中有哪些原始值,Number,String,Boolean,Null,Undefined这些基本数据类型都是原始值原始值存储在栈中。意思就是说,...

            最近开始注重自己的基础知识,以前总是觉得自己什么都要会一点,不精也没关系,现在想想,感觉这种想法是错误的。一些最基本的基础底层知识还是要很扎实的。

    Js原始值

            原始值即一些代表原始数据类型的值,也叫基本数据类型,首先说一下js中有哪些原始值,Number,String,Boolean,Null,Undefined这些基本数据类型都是原始值。原始值存储在栈中。意思就是说,当一个原始变量把值赋给另一个原始变量时,只是把栈中的内容复制给另一个原始变量,此时这两个变量互不影响,即当一个变量值改变时,另一个变量不会因此而发生任何变化。
    var a = 10 ;
    var b = a ;
    a = 20;
    console.log(b);     //输出10 b的值不会因a的值的改变而该改变

    Js引用值

            引用值是指一些复合类型数据的值,包括Object,function,Array,RegExp,Data,引用值于原始值不同,引用值把引用变量存储在栈中,而实际的对象存储在堆中。每一个引用变量都有一根指针指向其堆中的实际对象。
    var a = [1,2,3] ;  
    var b = a ; 
    a.push(4) ;
    console.log(b) ;     //输出1,2,3,4 
    a = [12] ;
    console.log(b) ;  //输出1,2,3,4 
    console.log(a) ;  //输出12
            如图2所示,引用值a赋值给b时,各自的变量名存储在栈中,而实际对象值都指向堆中的同一个地址,当变量a通过方法改变值时,实际上时改变堆中内容,因此,此时b的值也会相应的改变。
             如图3所示,当a通过非方法改变值时,系统会为该引用变量重新创建一个堆房间,此时,a的指针指向新的堆地址。
    希望这篇文章对大家有帮助。。。。。。。

    展开全文
  • ES学习笔记三:原始值与引用值前言一、原始值与引用值1.1.基本用法1.2.类型确定1.3.基本包装类型总结 前言 此系列文章用于记录小萌新的ES6的学习经历如...引用值:主要若干个原始值或者引用值所组成的对象; ES规定
  • 原始值类型:Undefined、Null、Boolean、Number 和 String 型; 引用值类型:object,Array , 函数;存储在堆(heap)中的对象; 什么是栈? 由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等,存放一些基础...
  • 原始值:Number、String、Boolean、Undefined、Null、Symbol、BigInt 引用值:Object(其中包括 Array、Function 等等) 数据的存储 原始值直接存储在**栈(stack)**中的简单数据段,占用空间小、大小稳定,属于会...
  • #include #include using namespace std; vector<int> aVec; void getvectorint(vector<int> &temp); int main() ...为什么不都3呢,我用的引用啊,为什么不能对原始vector进行改变,请指教!
  • 在 JS 中,存在着 6 种原始值,分别:booleannullundefinednumberstringsymbol(新增)首先原始类型存储的都值,没有函数可以调用的,比如undefined.toString()此时你肯定会有疑问,这不对呀,明明'1'.toString...
  • 对象到原始值的转换,由许多期望以原始值作为值的内建函数和运算符自动调用的。这里有三种类型(hint):"string","number" 和 "default"。 当对象相加 obj1 + obj2,相减 obj1 - obj2,或者使用 alert(obj) 打印...
  • 原始值与引用值在ECMAScript 中,变量可以存放两种类型的值,即原始值和引用值。原始值(primitive value)存放在栈(stack)中的简单数据字段,也就是说,它们的值直接存储在变量访问的位置。 引用值(reference ...
  • 文章目录校验和、哈希值是什么?校验和的简单示例校验和的使用校验和计算器译者注 校验和、哈希值是什么? 校验和是对一组数据(通常是一个文件)进行算法-加密哈希函数运算得到的结果。通过比较你手头文件和原始...
  • 但如果这个表格包含了顶部的按钮,还有分页,甚至再包含了行编辑,那开发工作量就成倍的增加,特别在开发管理系统的时候,表格一个接一个的去开发, 即浪费时间,还对个人没有什么提升。今天小编带来了自己封装的...
  • 在讨论堆栈前,先要明确什么是原始值、引用值。 1.变量可以存放两种类型的值: 原始值 和 引用值 2.原始值代表原始数据类型的值,也叫基本数据类型,包括 Number、Stirng、Boolean、Null、Underfined。 3.引用值...
  • 我有一个从数据结构生成的浮点数列表,该数据结构一个字典列表-即我已经遍历整个列表并在给定字典中选择了某些.现在,我想对这些数据点进行实际操作,为此我需要参考原始位置.我试图简单地将数据点用作键,但是在...
  • 简介vue-element-admin 是一个后台前端解决方案,它基于 vue 和 element-ui实现。它使用了最新的前端技术栈,内置了 i18...相信不管你的需求是什么,本项目都能帮助到你。v4.1.0+版本之后默认 master 分支将不支持国...
  • 思考一个问题:字符串在js中属于基本数据类型,为什么会有属性呢? 在js中只要引用了字符串s的属性,js就会将字符串通过new String(s)的方式转换成对象,这个对象继承了字符串的方法,并用来处理属性的引用。一旦...
  • 点击上方蓝字关注我吧随着电子称重应用程序的扩展以及...就像名词“弹性体”一样,钢或铝在负载下会在一定程度上变形,但随后会返回其原始位置并对每个负载产生弹性响应。这些非常小的变化可以通过应变仪获得,电子...
  • 1、传递 在方法的调用过程中,实参把它的实际传递给...引用传递弥补了传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址传递过去,函数接收的是原始...
  • 不知道为什么用了malloc之后,运行会自行输出变量的原始值,我的printf函数明明输出的存储后的值。 一开始程序会自行输出“屯屯屯屯屯屯屯屯”以及数字乱码,我百度之后就在malloc函数后对name数组、no数组和...
  • 传递对基本型变量而言的,传递的该变量的一个副本,改变副本不影响原变量. 引用传递一般对于对象型变量而言的,传递的该对象地址的一个副本, 并不原对象本身 。 所以对引用对象进行操作会同时改变原对象. ...
  • 1、传递 在方法的调用过程中,实参把它的 实际 传递给形参,此传递过程就是将实参的复制一份传递到函数中,这样如果在函数中对该(形参的)...引用传递就是将对象的 地址 传递过去,函数接收的 原始...
  • 假设你有你的清单table = [[1, 2, 3], [10, 20, 30], [100, 200, 300]]您可以使用zip转置它,并将原始列表作为参数列表传递(星号做什么):transposed = zip(*table): [(1, 10, 100), (2, 20, 200), (3, 30, 300)]要...
  • 1. 哈希值是什么?哈希值是将任意长度的输入字符串转换为密码并进行固定输出的过程。哈希值不是一个“密码”,我们不能通过解密哈希来检索原始数据,它是一个单向的加密函数。你知道吗,我们可以在哈希算法的帮助下...
  • 传递參数和按引用传递參数全部參数(自变量)在Python里都按引用传递。假设你在函数里改动了參数,那么在调用这个函数的函数里,原始的參数也被改变了。比如:#!/usr/bin/python# 可写函数说明def changeme( ...
  • 一个函数,用于替换原始对象的内动态指定的对象中的键。 :clipboard: 为什么 您可能希望使用具有动态设置的会话来更新从静态源(例如文件)中检索到的对象。 设置通过会话数据进行映射并调用replace的...
  • 数据质量分析的主要任务检查原始数据中是否存在脏数据。脏数据一般指不符合要求以及不能直接进行相应分析的数据。在常见的数据挖掘工作中,脏数据包括:缺失、异常、不一致的、重复数据及含有特殊符号(如#...
  • 在 JS 中,存在着 6 种原始值,分别:booleannullundefinednumberstringsymbol(新增)首先原始类型存储的都值,没有函数可以调用的,比如undefined.toString()此时你肯定会有疑问,这不对呀,明明'1'.toString...
  • 这篇文章Python前往遇到有疑问的功能。...假设你在函数里改动了參数,那么在调用这个函数的函数里,原始的參数也被改变了。比如: #!/usr/bin/python # 可写函数说明 def changeme( mylist ): "改动传入...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,519
精华内容 1,007
关键字:

原始值是什么