精华内容
下载资源
问答
  • 一、JavaScript里有哪些数据类型,解释清楚null 和undefined,解释清楚原始数据类型和引用数据类型。比如讲一下1 和Number(1)的区别 数据类型:  undefined,没有定义数据类型  number,数值数据类型,例如10...

    一、JavaScript里有哪些数据类型,解释清楚null 和undefined,解释清楚原始数据类型和引用数据类型。比如讲一下1 和Number(1)的区别

    数据类型:

           undefined,没有定义数据类型

           number,数值数据类型,例如10或者1或者5.5

           string,字符串数据类型,例如”helloworld”

           boolean,布尔类型true|false

           object,对象类型,复杂的一组描述信息的集合

    null和undefined的区别:

           1、null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。Null表示“没有对象”,即该处不应该有值。典型的用法是:

    (1)作为函数的参数,表示该函数的参数不是对象

    (2)作为对象原型链的终点。

           2、当声明的变量还未被初始化时,变量的默认值为undefined

    undefined表示“缺少值”,就是此处应该有一个值,但是还没有定义。

    (1)  变量被声明了,但没有赋值时,就等于undefined。

    (2)  调用函数时,应该提供的参数没有提供,该参数就等于undefined

    (3)  对象没有赋值的属性,该属性的值为undefined

    (4)  函数没有返回值时,默认返回undefined

    原始数据类型(基本数据类型)、引用数据类型:

    1、        ECMAScript变量包含两种不同类型的值:基本类型值、引用类型值。

    2、        基本类型值:指的是保存在栈内存中的简单数据段。

    3、        引用类型值:指的是那些保存在堆内存中的对象,意思是,变量中保存的实际上只是一个指针,这个指针指向内存堆中实际的值。

    两种访问方式

    4、        基本类型值:按值访问,操作的是他们实际保存的值

    5、        引用类型值:按引用访问,当查询时,我们需要先从栈中读取内存地址,然后再找到保存在堆内存中的值。

    两种类型复制

     基本类型变量的复制:从一个变量向另一个复制时,会在栈中创建一个新值,然后把值复制到为新变量分配的位置上。

           引用类型变量的复制:复制的是存储在栈中的指针,将指针复制到栈中为新变量分配的空间中,而这个指针副本和原指针指向存储在堆中的同一个对象,复制操作结束后,两个变量实际上将引用同一个对象,因此改变其中一个,将影响另一个。

    函数参数的传递

           1、ECMA中所有函数的参数都是按值传递的;

    function setName(obj) {
        obj.name = "1111";
        obj = new Object();
        obj.name= "2222";
    }
    var person = newObject();
    setName(person);
    console.log(person.name);

    //输出结果:1111

    两种变量类型检测

    1、        Typeof操作符是检测基本类型的最佳工具;

    2、        如果变量值是null或者对象,typeof将返回“object”;

    3、        Instanceof用于检测引用类型,可以检测到具体的、它是什么类型的实例。

    4、        如果变量是给定引用类型的实例,instanceof操作符会返回true;

    1 Number(1)的区别,aString(“a”)的区别类似

           console.log(1 ==Number(1));//true。

           1是一个常量,Number(1)是一个函数,把传入的参数转为number类型,比如Number(“  123 ”);返回值是123(消除前后空格),类型是number,如果传入的参数是Number(“abc”),则返回值是NaN,类型同样是number。

    Var a = new Number(1),则a的类型为Object。返回值为[Number:1]

    展开全文
  • 摘要:js的数据类型有种划分方式为 原始数据类型和 引用数据类型。 原始数据类型 存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。栈区包括了 变量的标识符和变量的值。  ...

    摘要:js的数据类型有种划分方式为 原始数据类型和 引用数据类型。

    原始数据类型 存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。栈区包括了 变量的标识符和变量的值。

     引用数据类型 存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处。放在栈空间中的值是该对象存储在堆中的地址。

    存储在堆和栈中的原始值和引用值

    按值传递 VS. 按引用传递

    按值传递(call by value)是最常用的求值策略:函数的形参是被调用时所传实参的副本。修改形参的值并不会影响实参。

    按引用传递(call by reference)时,函数的形参接收实参的隐式引用,而不再是副本。这意味着函数形参的值如果被修改,实参也会被修改。同时两者指向相同的值。

    按引用传递会使函数调用的追踪更加困难,有时也会引起一些微妙的BUG。

    按值传递由于每次都需要克隆副本,对一些复杂类型,性能较低。两种传值方式都有各自的问题。

    demo实例

    typeof 运算符,返回一个字符串,指示未计算的操作数的类型

        var person,name;
        person = 'kn';
    
        name=person;
        person='黑白';
        console.log(person,name,typeof person)//黑白 kn string

    person的改变没有改变name,说明 string 是按值传递的。赋值时创建一块新的内存空间

    1、基本类型

    • Boolean.  布尔值,true 和 false.
    • null. 一个表明 null 值的特殊关键字。 JavaScript 是大小写敏感的,因此 null 与 NullNULL或其他变量完全不同。
    • undefined.  变量未定义时的属性。
    • Number.  表示数字,例如: 42 或者 3.14159。
    • String.  表示字符串,例如:”Howdy”
    • Symbol ( 在 ECMAScript 6 中新添加的类型).。一种数据类型,它的实例是唯一且不可改变的。

    不可变(immutable)性质

    基本类型是不可变的(immutable),只有对象是可变的(mutable). 有时我们会尝试“改变”字符串的内容,但在JS中,任何看似对string值的”修改”操作,实际都是创建新的string值。任何方法都无法改变一个基本类型的值,  

    复制代码
    1     var str = "abc";
    2     str[0]; // "a"
    3     str[0] = "d";
    4     console.log(str); //abc
    5 
    6     var name = 'jozo';
    7     var upName=name.toUpperCase(); 
    8     console.log(upName,name); // 输出 'JOZO' 'jozo'
    复制代码

    方法操作无法改变一个基本类型的值

    1     var person = 'kn';
    2     person.age = 24;
    3     person.method = function(){};
    4 
    5     console.log(person.age); // undefined
    6     console.log(person.method); // undefined

    上面代码可知,我们不能给基本类型添加属性和方法

     

    2.引用类型

    引用类型的值是可变的

    
    
    
    复制代码
    1     var obj = {x : 0};
    2     obj.x = 100;
    3     var o = obj;
    4     o.x = 1;
    5     console.log(obj.x)// 1, 被修改
    6     o = {x:100};  //等同于重新赋值,重新开辟内存,不是修改
    7     console.log(JSON.stringify(obj),JSON.stringify(o))//{"x":1} {"x":100}
    8     obj.x; // 1, 不会因o = {"x":100}改变
    复制代码
    
    

    引用类型的值是同时保存在栈内存和堆内存中的对象

    javascript和其他语言不同,其不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间,那我们操作啥呢? 实际上,是操作对象的引用,
    所以引用类型的值是按引用访问的。
    准确地说,引用类型的存储需要内存的栈区和堆区(堆区是指内存里的堆内存)共同完成,栈区内存保存变量标识符和指向堆内存中该对象的指针,
    也可以说是该对象在堆内存的地址。
    假如有以下几个对象:

    var person1 = {name:’jozo’};
    var person2 = {name:’xiaom’};
    var person3 = {name:’xiaoq’};

    则这三个对象的在内存中保存的情况如下图:

     

        var person1 = {};
        var person2 = {};
        console.log(person1 == person2); // false

    引用类型时按引用访问的,换句话说就是比较两个对象的堆内存中的地址是否相同,那很明显,person1和person2在堆内存中地址是不同的。

     

    两种数据类型在实参和形参中的区别

    首先要明白什么实参什么是形参。

    实参:可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。
    形参:全称为“形式参数”是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传递的参数。
    形参的作用是实现主调函数与被调函数之间的联系,通常将函数所处理的数据,影响函数功能的因素或者函数处理的结果作为形参。
    复制代码
    function addNum(param)  //相对于addNum方法来说 param是形参
    { 
        param+=10; 
         return param; 
    } 
    var num=10;  
    var result=addNum(num); //相对于addNum方法来说 num是实参
    console.log(num);  //10  
    console.log(result);//20
    复制代码

    上面的例子中,当将 num作为实参传入方法 addNum是 param作为形参接受 并在方法体内使用,且num在全局中没用改变,但当实参为引用类型时

    复制代码
    1 function fun(param)  //相对于fun方法来说 param是形参
    2 { 
    3     param[0]=99; 
    4      return param; 
    5 } 
    6 var num=[10];  
    7 var result=fun(num); //相对于fun方法来说 num是实参
    8 console.log(num[0]);  //99 
    9 console.log(result);//[99]
    复制代码

    在方法体内改变 形参将同时改变实参。这个是其他语言中不会存在的,例如php,需要操作引用时,使用 &地址符 在形参的时候声明

    复制代码
     1 <?php
     2 function fun($param</span>)  <span style="color: #008000">//</span><span style="color: #008000">相对于fun方法来说 param是形参   function fun(&amp;$param){}
     3 { 
     4     $param[0]=99; 
     5       // return $;
     6 } 
     7 $num=[10];  
     8 fun($num); //相对于fun方法来说 num是实参
     9 var_dump($num);
    10 /*
    11 array (size=1)
    12   0 => int 10
    13   */
    14 
    15 ?>
    复制代码

     思考: 正因为js中 function的形参若为引用类型时,可以影响实参! 推断 callback中参数原理

    复制代码
     1     function fun(data,callback){
     2         var json=[1,2,3];
     3         callback(json)
     4     }
     5 
     6     var data=[];
     7     fun(data,function(result){
     8         data=result;
     9     })
    10     console.log(data)//[1, 2, 3]
    复制代码

    如上例子 在回调函数中修改了 变量 data

    知识点1、 function 是一种数据类型,可以当做参数传递 2、数组是引用类型 3、引用类型的形参会影响实参

    复制代码
     1 <body>
     2     <button οnclick='log()'>ajax</button>
     3 </body>
     4 <script>
     5     function fun(data,callback){
     6         setTimeout(function(){
     7             var json=[1,2,3];
     8             callback(json)
     9         },4000)
    10     
    11     }
    12 
    13     var data=[];
    14     fun(data,function(res){
    15         data=res;
    16     })
    17     console.log(data)//[]
    18     function log(){
    19         console.log(data)//[1, 2, 3]  4秒后输出 
    20     }
    21 
    22 </script>
    复制代码

    使用 setTimeout 模拟ajax请求! 

     

     

     

     

     

    参考地址: http://www.w3school.com.cn/js/pro_js_value.asp 

    http://www.qdfuns.com/notes/17660/7f82003c5ce92d39d19d6be0403f3f3b.html

     

     

    展开全文
  • 原始数据类型即基本数据类型包括: Number,Bollean,String,Null,undefined。 基本数据类型值存储在栈中 引用数据类型: 引用数据类型值存在堆中,通过一个指向该值的变量名访问 (待续...) 转载于:...

    原始数据类型即基本数据类型包括:

    Number,Bollean,String,Null,undefined。

    基本数据类型值存储在栈中

    引用数据类型:

    引用数据类型值存在堆中,通过一个指向该值的变量名访问

    (待续...)

    转载于:https://www.cnblogs.com/rohanCh/p/7291742.html

    展开全文
  • 讲之前,先了解一下栈堆。栈为自动分配的内存空间,它由系统自动释放;...引用数据类型,数据保存在堆中,放在栈中的只是一个引用地址,引用地址指向保存在堆中的数据,可以根据引用地址访问堆中的数据。 ...

    讲之前,先了解一下栈和堆。栈为自动分配的内存空间,它由系统自动释放;而堆则是动态分配的内存,大小也不一定会自动释放

    基本数据类型,上一章中说过,此处不再提,基本数据类型可以直接赋值访问,保存在栈中。

    引用数据类型,数据保存在堆中,放在栈中的只是一个引用地址,引用地址指向保存在堆中的数据,可以根据引用地址访问堆中的数据。

    展开全文
  • 1.原始数据类型包括:Number.String. Boolean. Null. Undefine. 2.引用数据类型包括:对象. 数组. 函数 3.存储位置不同:原始数据类型存储在栈中,占据空间小,大小固定,属于频繁使用数据。引用数据类型存储在堆中...
  • 但是,本文将更多聚焦独特的原始数据类型NullUndefined,是什么让他们如此相似,却又似是而非。 一、理解NullUndefined 在JavaScript中,null是字面量同时也是语言中的关键字,用来表示无法识别的对象值。换
  • js的数据类型划分方式为 原始数据类型和 引用数据类型 栈: 原始数据类型(Undefined,Null,Boolean,Number、String) 堆: 引用数据类型(对象、数组、函数) 两种类型的区别: 存储位置不同 原始数据类型直接...
  • 文章目录js的数据类型划分方式为 原始数据类型(基础数据类型) 引用数据类型两种类型的区别1.存储位置不同2.传值方式不同3.两种数据类型在实参形参中的区别 js的数据类型划分方式为 原始数据类型(基础数据类型...
  • //原始数据类型和应用类型区别: 基本数据类型 数据存储发生在栈内存中 引用数据类型存储 分两步 在堆中保存数据,在栈中保存数据的地址(堆地址) 实例 /* 1.用函数实现在数组尾部插入数字20(不修改原数组) ...
  • 数据类型:  undefiend 没有定义数据类型  number 数值数据类型 例如 10或者1或者5.5  string 字符串数据类型用来描述文本 例如 "你的姓名"  boolean 布尔类型 true|false 不是正就是反,是或者否,有或者...
  • javaScript原始数据类型

    2020-08-07 00:16:51
    javaScript数据类型分为原始数据类型和引用数据类型 原始数据类型 引用类型
  • 两个不同的原始数据类型的变量是相互独立的,共有8个:byte、short、int、long、boolean、char、float、double。实例如下: int x=8; int y; y=x; y=7; //结果x值为8,y值为7,变量相互独立 但是对于引用类型...
  • js数据值类型 原始值 Number String Boolean undefined null ...1,2,3,4为原始数据类型,这四种类型都能识别出来,只有一个null识别不出来,归并到object当中 再加一个function 一共6大类型 ...
  • 1.ECMAScript3中定义了变量可分为原始和引用值。 原始值:是保存在栈(stack)中的简单数据段;也就是说他们的值是直接存储在变量访问的位置。 引用值:是保存在堆(heap)中的对象,也就是说,存储在变量处的值...
  • JavaScript数据类型,包括原始类型和引用类型有哪些? 原始类型有五个 Number类型 专门保存数字的类型,可用于进行数学计算等的数值 String类型 专门用来保存字符串的类型;” “,用来存储字符串类型的文本. ...
  • 也有其他的叫法,比如原始类型和对象类型,拥有方法的类型和不能拥有方法的类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两种的类型特点来命名的,大家爱叫啥就叫啥吧 o(╯□╰)o 。 1.基本类型 ...
  • 基本数据类型(原始值): undefined , null, Bollean, Number , String 引用数据类型(引用值):Object, Array, Date, RegExp 在原始数据类型中存在着包装类
  • 基本数据类型(原始数据类型)主要代表的是一个基本值 操作主要是值 + Number + String + Boolean + null + undefined 2. 引用数据类型存于堆内存 复制代码 引用数据类型(复合数据类型)存储多个值 操作的是引用...
  • Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装类 booleanBoolean charCharacter byteByte shortShort intInteger longLongfloatFloat doubleDouble 引用...
  • 基本类型和引用数据类型区别 1.基本数据类型和引用数据类型 javascript中有两种数据类型,分别是基本数据类型...String Numble Boolean Null Undefined Symbol(注:Symbol是ES6引入的一种新的原始数据类型,表示...
  • Java提供了两类数据类型:一种是基本数据(原始类型),一种是引用类型。 数据类型图: 基本数据类型: 注意: 1.在基本数据类型中,除了boolean类型所占长度与平台有关外,其他数据类型长度都是与平台无关的。比如...
  • 基本数据类型(或者叫原始类型,英文:primivates) null undefined number boolean string symbol 引用数据类型(英文:reference type) Object function Date RegExp array 数据...

空空如也

空空如也

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

原始数据类型和引用数据