• 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
  • 相关阅读:
    visual studio disable git
    app常见性能测试点
    App测试流程及测试点(个人整理版)
    APP测试要点
    APP端测试常见的功能点
    一文搞懂性能测试常见指标
    为什么会有生产bug?
    线上出了bug,是谁的责任?
    生产上线发现重大Bug的思考
    项目上线后出现Bug,该如何处理?
  • 原文地址:https://www.cnblogs.com/RoadAspenBK/p/7698840.html
Copyright © 2020-2023  润新知