数据类型、强制类型转换以及数字的进制问题

时间:2022-08-12 17:49:07

数据类型:

   ECMAScript中有五种简单数据类型(String、Number、Boolean、Null、Undefined)以及一种复杂数据类型(Object)

   typeof操作符用于检测给定变量的数据类型,可能会返回一下字符串 

     -"undefined" 值为定义

     -"boolean" 值为布尔值

     -"string" 值为字符串

     -"number" 值为数值

     -"object" 值为对象或者null

     -"function"值为函数

   String 字符串

      var  a  =  "word";

     由零或多个16位Unicode字符组成的字符序列,即字符串。可以用双引号或单引号表示,两者没有区别,但是不可混用。

     字符字面量又称为转义序列,用于表示非打印字符,或者具有其他用途的字符。例如 \n 表换行  \\ 表示斜杠

     注意:字符串是不可改变的,一经创建,值不可以再变

 如何强制转换为String   ?

   方法1:使用 toString() 方法,Boolean、Number、Objec以及String(其本身)具有toString() 方法 ,但是Null 和Undefined没有

        

 var  a = 123;
 
 var  b = a.toString();

 alert(typeof b ); //数据类型为String;"123"

 方法2:使用转型函数String() ,六种基本数据类型全部使用,对于Boolean、Number、Objec以及String来讲,作用与toString()一样,对于Null和Undefined有效果

 var  c = null;

 var d  =String(c);

 alert(typeof d)//数据类型为String; "null"

 方法3:使用加号操作符进行拼串 

var a = "\""+123+"\"";

alert(a); //输出值为"123"

 

  Number 数值

    var  a = 123;

    使用IEEE754(二进制浮点数算术标准)格式来表示整数和浮点数

    数字的进制

    基本格式为十进制整数,除十进制外,还可以用八进制或者十六进制的字面量表示。

    注意:八进制的字面量第一位必须是0,八进制的数字序列(0-7),如果超出数字序列,那么前面的0会被忽略,后面的数值会当做十进制数值解析

 

 var  num1 = 070; //八进制的56;
 var  num2 = 079; //无效的八进制,解析为十进制79

  

               八进制在严格模式下是无效的,会导致该模式JavaScript引擎抛出错误

               十六进制字面量的前两位必须是0x,后跟任何十六进制数字(0~9以及A-F),字母可以大写也可以小写

  浮点数值

  该数值中必须包含一个小数点,并且小数点后面至少有一位数字。小数点之前也可没有整数,但是不推荐。

  对于极大或者极小的数使用e表示法(科学计数法)表示浮点数值表示。

   3.125e7 = 31250000      0.00003 = 3e-5

 浮点数的最高精度为十七位小数,但是精度远远不如整数

NaN 

 非数值是一个特殊的数值。用于表示一个本来要返回数值的操作数未返回数值的情况。在ECMAScript中,任何数值除以非数值会返回NaN

 其具有的两大特点:

     1.任何涉及NaN的操作都会返回NaN l例如NaN/10  

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

 针对其特点定义了 isNaN() 函数

 它会在接收到一个值后,会尝试将其转化为数值。某些不是数值的值会被转化位数值,任何不能被转换的值都会导致该函数返回true.\

 

                最大数:Number.Max_Value

               最小数(大于0的最小数):Number.Min_Value

               正无穷:Number=Infinity;

               负无穷:Number=-Infinity;

              不是数值:Number=NaN;

               以上三个用typeof检验时,数据类型都是Number

  如果转换为Number?

  使用Number()、parseInt()以及 parseFloat()三个函数

  使用Number()

  Boolean    ---》 ture 返回 1  false 返回 0

  Undefined ---》NaN 

  Null ---》 0

  Number ---》Number

 忽略前导0

 使用parseInt(),更多的看其是否符合数值模式

 忽略字符串前的空格,找到第一个非空格字符,如果该字符不是数字字符或者负号则返回 NaN;

 可以识别整数格式,拥有第二个参数,可以规定数字进制    parseInt(”123“,10);

 空字符串  ---》NaN

 解析时遇到了一个非数字字符则停止解析,否则持续解析完

 使用parseFloat()

  从第一个字符开始解析每个字符,解析到无效浮点数停止解析,否则持续解析完。

  直接忽略前导0

 只可以解析十进制,没有第二个参数

 如果字符串可以解析为整数,则直接解析为整数

 

Boolean  布尔值

 该类型只有两个字面值 true 或者 flase  注意区分大小写,Ture和Flase都不是布尔值

 如何转换为布尔值?

 使用 Boolean()

   String任何非空字符串都为true 

   Number 任何非零数字值(包括无穷大)都为true     0和NaN转换为false

   Object 任何对象都会转换为true    null会转换为false

   undefined只会转换为false

 Undefined  未定义

 显示地初始化变量是明智的,包含undefined的变量是还没有被声明,而不是未初始化。未初始化的变量也会被赋予这个属性,声明是为证明它只是没有被声明,而不是也没有初始化。

var a = undefined;
aler(a==undefined);//返回true

 Null 空值

专门用来表示空的对象,用typeof检验时返回Object

 事实上,undefined时派生于null,在检验undefined == null  返回true;

注意undefined和null的区别  undefined是为定义的 但是null是定义了一个空的对象;

 

 

以上仅为学习js基础后复习整理的,有错误的地方请指正!