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;
    
  • 相关阅读:
    使用python2 对服务器监控(监控内存,CPU,网卡流量等)
    centos7使用yum提示有事物未完成的解决办法:
    如何判断Linux下 网卡是虚拟还是物理网卡?
    python3监控系统资源最终版(获取CPU,内存,磁盘,网卡等信息),返回json格式。
    python3 系统监控脚本(2) (监控CPU,内存等信息)
    python3 系统监控脚本(CPU,memory,网络,disk等)
    获取Linux系统运行时间
    Linux之jq
    hadoop--presto安装部署
    docker 笔记--运行中的容器如何添加端口映射
  • 原文地址:https://www.cnblogs.com/xianglan666/p/12919620.html
Copyright © 2011-2022 走看看