美文网首页
JavaScript 数据类型

JavaScript 数据类型

作者: leo_zhu | 来源:发表于2022-04-17 11:25 被阅读0次

    javascript是弱类型语言。即,一个变量可以赋不同数据类型的值。javascript允许变量类型的隐式转换,允许强制类型转换等,如字符串和数值可以自动转化;而强类型语言一般不允许这么做。

    在JavaScript里 变量均为对象。当声明一个变量时,就创建了一个新的对象;

    基本类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(注:Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。)。

    对象类型:对象(Object)、数组(Array)、函数(Function),还有两个特殊的对象:正则(RegExp)和日期(Date)。

    let x; // x 为 undefined 

    let x = 5; // 现在 x 为数字

    let x1 = 34.00; // 小数点 也是数字类型

    let x ="John";// 现在 x 为字符串

    let x = ["Q","C",1,3];// 数组 可以直接

    let x = {name:'leo',age:17};// 对象

    let t =function(){}// 函数 function

    // 变量类型的隐式转换

    let x1 =5;// 定义时是 typeof x1  number 

    x1 ='json';// 通过赋值string 变成了 typeof x1  string 

     // 数组定义

    let arr = [];

    or 

    let arr =newArray();

    cars[0]="Saab";// 为数组第一项赋值

    or

    let arr = ["Saab"]

    // 对象定义与数组类似

    let arr = {};

    or

    let arr =newObject();

    cars['name']="Saab";// 为对象添加key-value

    or

    let arr = {name:"Saab"}

    变量的数据类型可以使用 typeof

    typeof "leo"// 返回 string

    typeof 2.67// 返回 number

    typeof true// 返回 boolean

    typeof ["Q","C"]// 返回 object

    typeof {name:'leo', age:17}// 返回 object

    typeof function(){}// 返回 function

    typeof null// 返回 object// 

    注:typeof 数组与对象,null都返回,object

    // 如何区分他三呢?

    let n =null;

    console.log(n ===null);//  true

    // 判断数组

    1,instanceof 

    var arr = [1,2,3,1];

    console.log(arr instanceof Array);// true 

    2,constructor

    var arr = [1,2,3,1];

    console.log(arr.constructor=== Array);// true 

    3,Object.prototype.toString

    function isArrayFn(o){

    return Object.prototype.toString.call(o) ==='[object Array]';

    }

    var arr = [1,2,3,1];

    console.log(isArrayFn(arr));// true

    4,es5 新增Array.isArray()

    var arr = [1,2,3,1];

    console.log(Array.isArray(arr));// true

    // 补充几个判断 null/object/array 的工具类

    // 通过 typeof

    var getDataType = function(o){

        if(o===null){

            return'null';   

         } else if (typeof o =='object'){

            if(typeof o.length =='number'){

                return 'Array';       

             }else{

                return 'Object';         

             }    

        }else{

            return 'param is no object type';   

         }

    }

    // 通过instanceof

    var getDataType =function(o){

        if(o===null){

            return'null';    

        }

        if(o instanceof Array){

            return 'Array'

        }else if( o instanceof Object){

            return'Object';    

        }else{

            return'param is no object type';   

         }

    };

    补充let,var,const区别

    三者都是定义变量,var/let 定义可变变量,区别在于,var 会变量提升,var允许重复声明,而let不允许重复声明,具体参看下面示例;const 定义不可变变量

    //变量提升

    console.log(a);// undefined

    var a =13;

    var a =14;

    // 相当于

    var a;// 只声明没有赋值,默认为undefined

    console.log(a);

    a =13;

    //不允许重复声明

    let a =12

    console.log(a)

    let a =13// => 此行出错:SyntaxError: Identifier 'a' has already been declared

    console.log(a)

    var a =12

    let a =13// => SyntaxError: Identifier 'a' has already been declaredconsole.log(a)

    let a =13

    var a =12// => SyntaxError: Identifier 'a' has already been declaredconsole.log(a)

    // const 

    const a =1;

    a =2;// 报错,不可修改const 的值

    相关文章

      网友评论

          本文标题:JavaScript 数据类型

          本文链接:https://www.haomeiwen.com/subject/witlertx.html