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;
    
  • 相关阅读:
    APK自我保护方法
    Andorid APK反逆向解决方案---梆梆加固原理探寻
    判断android文件是否加壳
    java调用dll-JNA
    Java调用本地接口
    pat00-自测2. 素数对猜想 (20)
    pat00-自测4. Have Fun with Numbers (20)
    pat00-自测3. 数组元素循环右移问题 (20)
    pat00-自测1. 打印沙漏(20)
    pat1013. Battle Over Cities (25)
  • 原文地址:https://www.cnblogs.com/xianglan666/p/12919620.html
Copyright © 2011-2022 走看看