zoukankan      html  css  js  c++  java
  • js 数据类型的初步理解

    1、js中的类型

    字符串、数字、布尔、数组、对象、Null、Undefined

    ①基本数据类型

    null、undefined、boolean、number、string

    console.log(typeof 1);//number
    
        console.log(typeof "a");//string
    
        console.log(typeof null);//object
    
        console.log(typeof undefined);//undefined
        
        console.log(typeof true);//boolean

    但是 typeof null  的返回值却是 object ,js中定义的null 是一个特殊的对象。更确切的说,null是一个空对象的指针,指向一个空对象。以此来和undefined区分开。

    为了便于操作基本类型值,ECMAScript还提供了三个特殊的引用类型:Boolean、Number和String,标准库提供了构造函数来封装布尔值、数字和字符串作为对象。这些类型与其他引用类型相似,同时也具有与各自的基本包装类型相应的特殊行为。实际上,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。

    1
    2
    3
    var s1 = "some text";
    var s2 = s1.substring(2);
    var s3 = new String("some text");

    但是不同于原始的字符串,String对象是一个真正的对象。

    1
    2
    typeof s1; //"string"
    typeof s3; //"object"

    这个例子中的变量s1包含一个字符串,字符串当然是基本类型值。而下一行调用了s1的substring()方法,并将返回的结果保存在s2中。我们知道,基本类型值不是对象,因此从逻辑上讲,它们不应该有方法(但是它们确实有方法)。其实,为了让我们实现这种直观的操作,后台已经自动完成了一系列的处理。当第二行代码访问s1时,访问过程处于一种读取模式,也就是从内存中读取这个字符串的值。而在读取模式中访问字符串时,后台都会自动完成下列处理:

    (1)创建String类型的一个实例。

    (2)在实例上调用指定方法。

    (3)销毁这个实例。

    特点是:

    基本数据类型的值是不能影响其他值改变的。

    //传递基本类型时,实参传入的是该元素的一个副本,该元素本身并不变化。
        var a = true;//boolean
        function arr(argument) {
            argument = false;
            console.log(argument);
        }
        arr(a);//false
        console.log(a);//true
    
    
        var b = 1;//number
        function num(argument){
            argument = argument-1;
            console.log(argument);
        }
        num(b);//0
        console.log(b);//1
    
        var c = undefined;
        function und(argument){
            argument = 1;
        }
        und(c);//1
        console.log(c);//undefined
    
        var d = "asdf";//string
    
        function str(argument){
            argument = argument.slice(1,2);
            console.log(argument);
        }
        str(d);//s
        console.log(d);//asdf

    ②引用类型。

    引用类型通常叫做类(class)。

    object、array。

    引用类型的值存储在 内存中的栈区和堆区。

    var  a = {}.  var b=a;

    赋值给b的实质上堆区的一个指针,指向a对象的值。

    所以,当a的值改变时,b的值也会随之改变。

    var e = {};//obiect 
        var f = e;
        function obj(argument){
            argument.name = "onject";
            console.log(e.name);
        }
        obj(e);//onject
        console.log(e.name);//onject
        console.log(f.name);//onject
  • 相关阅读:
    LINUX查看进程开始时间、结束时间、运行时间
    excel字符处理函数
    oracle RMAN参数配置详解
    Linux添加双IP
    免费软电话 — XLite 的安装及配置向导
    Asterisk实现寻呼对讲广播的Page()命令详解
    自动化工具的重要性
    负载均衡之应用请求路由模块的使用(ARR)(七)[使用ARR来实现主机名共享]
    负载均衡之应用请求路由模块的使用(ARR)(二)[安装]
    需求管理随笔
  • 原文地址:https://www.cnblogs.com/RoadAspenBK/p/7698840.html
Copyright © 2011-2022 走看看