• js数据类型和类型检测


    基本数据类型:
    undefined;null;boolean;number;string
    这五种基本类型是按值访问的,因为可以操作保存在变量中的实际的值


    引用数据类型:
    object
    引用数据类型是保存在内存中的对象,javascript不允许直接访问内存中的位置,也就是不能直接操作对象的内存空间,在操作对象时,实际操作的是对象的引用,而不是实际的对象(这种说法其实是不严谨的,当复制保存着对象的某个变量时,操作的是对象的引用。但是为对象添加属性时,操作的是实际的对象)

    参数传递:
    javascript中所有的函数都是按值传递的,所以当函数的形式参数(用ECMAscript的概念,就是arguments对象中的一个元素)是引用数据型时,它也是按值传递的:其方式复制一份该对象的地址给形参,记住不是引用

    eg:

    function addTen(num){
    num+=10;
    return num;
    }
    
    var count=20;
    var result=addTen(count);
    alert(count);	//20 值没有变化	其实就是当count把值复制给形参num时,就与count无关了
    alert(result);	//30
    

      


    另一个例子:
    eg:

    function setNamea(obj){
    obj.name:"monica";
    }
    
    var person={};
    setNamea(person);
    alert(person.name);	//"monica" 它们只是用了同一个地址,虽然它是按值传递的但效果和引用传递时一样的,所以常被错误的认为是引用传递
    

      

    看看这个例子:
    eg:

    function setNameb(obj){
    obj.name="monica";
    obj = new Object();
    obj.name="Green";
    }
    
    var person={};
    setnameb(person);
    alert(person.name);	//monica(闭包)
    

      


    检测类型:typeof和instanceof

    var a=undefined;    alert(typeof a);	//undefined
    var b=null;	    alert(typeof b);	//object
    var c=true;	    alert(typeof c);	//boolean
    var d=1;	    alert(typeof d);	//number
    var e="monica";	    alert(typeof e);	//string
    var f=new Object();  alert(typeof f);	//object
    

      


    instanceof返回的是true或则false

    var person{};
    alert(person instanceof Object);	//instanceof is a object?   true
    
    alert(person instanceof Array);	    //instanceof is a Array?  	false
    
    alert(person instanceof RegExp);    //instanceof is a RegExp?  	false
    

      

  • 相关阅读:
    每天一个linux命令(6):mv命令
    每天一个linux命令(5):rm 命令
    每天一个linux命令(4):mkdir命令
    每天一个linux命令(3):pwd命令
    每天一个linux命令(2):cd命令
    每天一个linux命令(1):ls命令
    Linux下svn命令详解
    Linux下SVN安装配置
    SVN命令使用详解
    分布式Web服务器架构
  • 原文地址:https://www.cnblogs.com/Eyrum/p/4565705.html
Copyright © 2020-2023  润新知