zoukankan      html  css  js  c++  java
  • JavaScript基础知识整理(变量)

    变量

    ECMAScript变量有两种不同数据类型的值,分别是基本类型和引用类型,两者的不同在于基本类型值是简单的数据段,引用类型值一般指由多个值构成的对象

    基本类型

    基本数据类型包括5种:Undefined、Null、Boolean、Number、String,基本数据类型是按值访问的,操作的是变量实际的值

    引用类型

    引用类型的值保存在内存中,因为JavaScript不允许直接访问内存位置,所以我们不能直接操作对象的内存空间,而是操作对象的引用,所以说引用类型的值是按引用访问的。

    这里指的是一般的赋值操作,当给对象添加属性时,操作的是实际的对象


    动态添加属性

    引用类型的值可以动态添加属性,而基本类型不可以

    var obj = new Object();
    
    obj.name = "xiaoxiao";
    
    alert(obj.name);  //"xiaoxiao"
    
    var name = "xiaoxiao";
    
    name.sex = "男";
    
    alert(name.sex); //undefined
    

    复制变量值

    基本类型的值进行复制的时候,会在新变量创建新值作为原来变量的副本,新变量和原变量彼此独立,进行的操作不会相互影响

    引用类型的值进行复制的时候,原变量进行复制的是一个指向存储在堆中一个对象的指针,所以两个变量指向的是同一个对象

    基本类型存储位置在栈,引用类型存储位置在堆

    var obj1 = new Object();
    var obj2 = obj1;
    obj1.name = "xiaoxiao";
    alert(obj2.name); //"xiaoxiao";

    传递参数

    不管是基本类型的值还是引用类型的值,在给函数传递参数时,都是按值传递。

    进行按值传递也就代表着给参数传值和给变量复制值进行一样的操作,基本类型操作栈,每个变量都是独立的;引用类型操作堆,每个变量代表一个指向堆内的指针,引用同一个对象。

    基本类型的值进行参数传递时和复制变量值时一样,把值传递给了函数的一个局部变量(arguments对象的一个元素)

    引用类型的值进行参数传递时,传给局部变量的是原对象的地址而不是复制时的指针,所以在函数内进行的操作会影响原对象


    类型检测

    检测基本类型时可以用typeof操作符,检测引用类型时可以用instanceof操作符。

    var a = "xiaoxiao";
    
    alert(typeof a); //string
    
    var obj = new Object();
    
    alert(obj instanceof Object); //true;
    
  • 相关阅读:
    Unity-JobSystem
    Unity-ECS-实践
    Unity-Editor
    网络编程-HTTPS
    网络编程-UDP、TCP
    Cast, OfType
    DataGrid
    bat 开机自动执行脚本
    bat 单行输出彩色信息
    工厂模式
  • 原文地址:https://www.cnblogs.com/xianglan666/p/12919620.html
Copyright © 2011-2022 走看看