• js基本数据类型


    ECMAScript 中有5种简单数据类型(也称为基本数据类型):Undefined,Null,Boolean,Number和String。一种复杂数据类型:object。

    typeof操作符

    由于js中的变量是松散类型的,所以它提供了一种检测当前变量的数据类型的方法,也就是typeof关键字.
    通过typeof关键字,对这5种数据类型会返回下面的值(以字符串形式显示)
    undefined ---------- 如果值未定义 Undefined

    boolean ---------- 如果这个值是布尔值 Boolean

    string ---------- 如果这个值是字符串 String

    number ---------- 如果这个值是数值类型 Number

    object ---------- 如果这个值是对象或null Object

    需要注意的是typeof null返回为object,因为特殊值null被认为是一个空的对象引用。

    typeof是一个操作符而不是函数,圆括号可以使用但不是必须

    Undefined类型

    Undefined类型只有一个值,即特殊的undefined

    在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined

    声明但未初始化与尚未定义的变量还是不一样:

    var message;     //age未声明
    
    alert(message);    //"undefined"
    
    alert(age);   //产生错误
    
    alert(typeof(message));     //"undefined"
    
    alert(typeof(age));     //"undefined"

     Null类型

    Null类型也只有一个值,这个值是特殊的null,从逻辑角度来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null时会返回object的原因。

    如果定义的变量将来准备用于保存对象,那么最好将该变量初始化为null,而不是其他值。这样一来,只要直接检测null值就可以知道相应的变量是否已经保存了一个对象的引用了。

    实际上,undefined值是派生自null值的,因此ECMA-262规定对它们的相等性测试要返回true。

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

    Boolean类型

    此类型只有两个值:true和false

    注意:boolean类型的字面值true和false是区分大小写的。

    avaScript中所有类型的值都有与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用类型转换函数Boolean(),例如:

        var message = 'Hello World';
        var messageAsBoolean = Boolean(message);

    下表列出了各种数据类型对应的转换规则

    数据类型 转换为true 转换为false
    Boolean true false
    String 任何非空字符串 ""(空字符串)
    Number 任何非零数字值 0和NaN
    Object 任何对象 null
    Undefined 不适用 undefined

     

     

     

     

     

     

    Number类型

    最基本的数值字面量格式是十进制整数,十进制可以在代码中直接输入。

    除了十进制,还可以用八进制和十六进制。

    八进制字面值的第一位必须是零(0),然后八进制数字序列为(0~7),如果数字超出了0~7这个范围,那么前导0将被忽略,后面的数值按十进制解析。

    var a = 070;   //八进制状态下的56
    var b = 079;   //无效的八进制,解析为79
    var c = 08;    //无效的八进制,解析为8

    八进制字面量在严格模式下是无效的

    十六进制字面值前两位必须是0x,后跟任何十六进制数字(0~9及A~F),字母不区分大小写。

    在算术运算时,八进制和十六进制都会被转换成十进制数值。

     1.浮点数

    所谓浮点数值,就是该数值中必须包括一个小数点,并且小数点后面必须至少有一个数字。

    由于保存浮点数所占用内存是整数的两倍,所以ECMAScript会尽可能将浮点数转换为整数。

    如果小数点后没有任何数字或浮点数本身就表示一个整数,就会被转换为整数。

    console.log(1.)    //1
    console.log(10.00)   //10

    默认情况下,ECMAScript会将小数点后面带6个零以上的浮点数值转换为以e表示法表示的数值。(例:0.0000003会被转换为3e-7).

    浮点数值的最高精度为17位。但算术计算精度远不如整数。例:0.1+0.2不是0.3,而是0.30000000000000004,这个小小的舍入误差会导致无法测试特定的浮点数值。

    永远不要测试某个特定的浮点数值。

    关于浮点数值计算产生舍入误差的问题:这是使用基于IEEE754数值的浮点计算的通病,ECMAScript并非独此一家,其他使用相同数值语言的也存在这个问题。

    2.NaN

    NaN(Not a Number),即非数值是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。

    NaN本身有两个特点:

    1.任何涉及NaN的操作(例如NaN*10,NaN/10)都会返会NaN。

    2.NaN与任何数值都不相等,包括NaN本身。

    console.log(NaN == NaN);    //false

    isNaN(),判断是否“不是数值”,这个函数接受一个参数,该参数可以是任何类型,isNaN()在接收到一个值之后,会尝试将值转换为数值,可以转换的将返回false,不能转换为数值的将会返回true。

    3.数值转换

    有3个函数可以把非数值转换为数值:number(),parseInt()和parseFloat()。

    number()可以用于任何数据类型,而另外两个函数则专门用于把字符串转换为数值。

    • 如果是Boolean,true和false将分别被转换为1和0。
    • 如果是数字值,只是简单传入和返回。
    • 如果是null值,返会0。
    • 如果是undefined,返回NaN。
    • 如果是字符串则较为复杂。

    parseInt()在转换字符串的时会忽略字符串前的空格,直至找到第一个非空格字符。如果第一个字符不是数字字符或者是负号,返回NaN。

    parseInt()可以接受两个参数,第一个为要转换的参数,第二个为基数(进制)。如果不指定基数意味着让parseInt()自己决定如何解析,因此为了避免错误的解析,建议指定基数。
    parseFloat()用于转换浮点数。

    String类型

    String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由单引号(')或双引号(")表示。

    字符串的长度可以通过其length属性取得。

    var text = "this string length is 24";
    console.log(text.length);         //24

    转换字符串可以通过几乎每个值都有的toString()方法。

    var a = 11;
    console.log(a,typeof a);   //11 "number"
    var b = a.toString();
    console.log(b,typeof b);   //11 string

    object类型

    ECMAScript中的对象其实就是一组数据和功能的集合。可以通过以下方式创建一个对象:

    var obj = new object();

  • 相关阅读:
    Sqlite EF6注册
    C# 等值锁定
    net 4.0+EF6+Sqlite 使用,安装,打包
    C#调用C++函数
    C# 调用.exe文件
    Java继承
    python多线程与threading模块
    Java对象构造
    python多线程与_thread模块
    Linux文件压缩与打包
  • 原文地址:https://www.cnblogs.com/loseway/p/9742167.html
Copyright © 2020-2023  润新知