• js变量的基本类型和引用类型


    Javascript变量分为基本变量和引用变量

    • 基本类型:如undefined,null,Number,String,Boolean,Symbol...  按值访问, 可操作保存在变量中的实际值, 保存在栈内存中。
    • 引用类型:如多个可多个值组成的对象,数组,正则...  按引用访问, 不可直接操作访问对象内存空间, 保存在栈内存和堆内存中。

    1.复制变量

    • 基本类型:创建新值,把该值复制到新分配的变量地址上,两值可参与任何操作而不互相影响。
    • 引用类型:创建一个新的指针(指针指向存储堆里被复制的对象),将该指针放到为新变量分配的栈空间里

    2.参数传递

    ECMAScrpit中的所有参数都是按值传递的。基本类型和引用类型作参数传递都类似于复制。

    • 基本类型:被传递的值会被复制给函数的内的局部变量,函数内部的局部变量不会影响函数外部的变量的值。
    • 引用类型:将内存中的地址的值(指向堆内数据)复制给函数内部的局部变量(这时局部变量和函数外的变量都指向同一个堆内数据),局部作用域修改的值会在全局反映。

    3.检查类型

      

           var num=1;
            var st='haha';
            var bo=true;
            var nu=null;
            var obj=new Object();
            var ar=[];
    • typeof:typeof操作符是确定该值是Number,Boolean,undefined等基本类型的很不错的工具,但是在判断基本类型还是引用类型就没那么好用了;

      

         console.log(typeof(num));//Number
            console.log(typeof(st));//String
            console.log(typeof(bo));//Boolean
            console.log(typeof(obj),typeof(nu));//Object,Object
    • instanceof:如果instanceof检测到是引用类型实例会返回true,是基本类型会返回false
            console.log(nu instanceof Object );//false
            console.log(obj instanceof  Object);//true
            console.log(ar instanceof Array );//true

     所以确定哪一种值是基本类型用typeof,确定值是哪一种引用类型用instanceof。

    参考:《JavaScript权威指南》第三版

  • 相关阅读:
    JavaScript-5(数组)
    JavaScript-作用域-预解析
    JavaScript-日历生成器
    JavaScript-8行5列表格
    package XXX.i386.rpm is not installed(检查在Linux上安装Oracle所需的pkg时)
    ubuntu13.04下安装jdk7
    Linux远程传输命令之scp使用方法
    Mac OS X中MacPorts安装和使用
    第一天 Linux 是什么
    Javascript与当前项目的思考
  • 原文地址:https://www.cnblogs.com/ellen-mylife/p/11258333.html
Copyright © 2020-2023  润新知