美文网首页编程语言爱好者
详解JavaScript 的变量

详解JavaScript 的变量

作者: 编程鸭 | 来源:发表于2019-04-07 09:06 被阅读0次

    ECMAScript变量一般有两种数据类型的值:基本类型和引用类型。

     基本类型: 简单的数据段:Undefined, Null, Boolean, Number, String

     引用类型:多个值构成的对象;

    动态的属性>>>

    定义两者的值:创建一个变量并为其变量赋值;

    执行两者的值:

    引用类型:可以添加、删除属性和方法;

    基本类型:不能添加、删除属性和方法;

    比如:引用类型 a,可以添加属性 name age

    vara =newObject();

    a.name ="我喂前端袋盐";

    a.age =24;

    console.log(a.name);//我喂前端袋盐

    基本类型 name 无法添加属性 age

    varname ="我喂前端袋盐";

    name.age =24;

    console.log(name.age);//undefined

    代码中可知:只能给引用类型值动态地添加属性,以便将来使用。

    赋值变量值>>

    从一个变量向另一个变量复制基本类型值和引用类型值时:

    基本类型:在变量对象上创建一个新值,并将其值复制给新变量分配的位置上;(完全独立的两个变量)例如:

    vara =111;

    varb = a;

    console.log(b);//111

    代码中可知:变量b的值只是变量a的值的一个副本,两者的值111是完全独立的。

    引用类型:将存储在变量对象中的值复制一份放到为新变量分配的空间中;(引用同一个对象的两个变量)

    引用类型的值的副本实际是一个指针,指向存储在堆中的一个对象。

    varobj1 =newObject;

    varobj2 = obj1;

    obj1.name ="我喂前端袋盐";

    console.log(obj2,name);// Object { name="我喂前端袋盐"} 我喂前端袋盐

    代码中可知:obj1和obj2都指向同一个对象Object;所以,为obj1添加的name属性,通过obj2也可以访问的到。

    3. 传递参数

    我们都知道基本类型是按值访问的,因为可以访问保存在变量中的实际的值。

    所有函数的参数都是按值传递的。

    基本类型:基本类型值的传递如同基本类型变量的复制一样;

    在向参数传递值,被传递的值会被复制给一个局部变量(命名参数),因此这个局部变量的变化不会反映在函数的外部。

    例如:

    functionfn(num){

    num +=10;

    returnnum;

    }

    vara =10;

    varresult = fn(a);

    console.log(result);//20

    console.log(a);//10

    代码中可知:参数num和变量a互不相识,只是有着相同的值而已,用完之后,你还是你,我还是我,互不干政。

    引用类型:引用类型的传递如同引用类型变量的复制一样;

    在向参数传递值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。

    例如:

    functionfn(obj){

    obj.name ='我喂前端袋盐';

    }

    varperson =newObject();

    fn(person);

    console.log(person.name);//我喂前端袋盐

    代码中可知:在这个函数内部,参数obj和变量person引用的是同一个对象Object,所以,你不动我也不动,你动我也动,你中有我,我中有你,情义绵绵,经久不息……

    也就是说:即使变量person是按值传递的,但是参数obj(想象成局部变量)还是会按引用来访问同一个对象。

    访问变量有按值和按引用两种方式,参数只能按值传递。

    检测类型>>

    基本类型:typeof

    引用类型:instanceof(对象或null)例如:

    vara ='Wo Wei Qian Duan Dai Yan';

    varb =24;

    varc ='';

    vard =true;

    vare;

    varg =undefined;

    varf =null;// 比较特殊

    varh =newObject();

    console.log(typeofa);//string

    console.log(typeofb);//number 

    console.log(typeofc);//string

    console.log(typeofd);//boolean

    console.log(typeofe);//undefined

    console.log(typeofg);//undefined

    console.log(typeoff);//object

    console.log(typeofh);//object

    所用引用类型的值都是Object的实例。如下:

    varperson =newObject();

    varnum = [1,2,3];

    varpattern =/.at/i;

    console.log(personinstanceofObject);//true

    console.log(numinstanceofObject);//true

    console.log(numinstanceofArray);//true

    console.log(patterninstanceofObject);//true

    console.log(patterninstanceofRegExp);//true

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

    作者:我喂前端袋盐丶 

    来源:CSDN 

    原文:https://blog.csdn.net/yingou7050/article/details/88954956 

    如果您在前端学习的过程中遇到难题,欢迎关注【筑梦前端】,也可以后台留言与大家一起交流解决!

    相关文章

      网友评论

        本文标题:详解JavaScript 的变量

        本文链接:https://www.haomeiwen.com/subject/xjlqiqtx.html