javascript 红宝书笔记之数据类型

 
typeof   检测给定变量的数据类型,通过typeof来区分函数和其它对象
 
var message = 'some string';
console.log(typeof(message));     // "string"
 
console.log(typeof(null));   // "Object" 特殊的返回值,因为null被认为是一个空的对象引用。
 
 
注意:
  • 尚未声明过的变量,只能进行一项操作,就是使用typeof检测它的数据类型
 
 
Undefined    它只是一个值,值是undefined. 
             场景:使用var 声明变量,但没有赋值(没有初始化)时,这个变量会返回 undefined.
             Undefined主要目的是用于比较,是为了正式区分空对象指针与未经过初始化的变量,我理解为,是为了区分变量的返回值是空对象null还是undefined
 
当声明变量未赋值时,这个变量与undefined是等价的
var message;
console.log(message == undefined);   //true
 
无论什么情况下,都不要把一个变量的值,设为undefined
 
 
 
注意:
  • 对未赋值的变量与未声明的变量,执行typeof时,均返回 undefined;
  • 在实际操作中,只需要知道一点,使用typeof检测变量时,如果返回 undefined ,我们就会知道,这个变量没有被赋值,就是没有被初始化;
 
 
null     它只有一个值,是第二个只有一个值的数据类型,它的值是 null。
         它表示一个空的对象指针,使用typeof检测时会返回 “Object”.
 
var message = null;
console.log(typeof(message));   //  "Object"
 
如果定义的变量,将来用于保存对象,那么最好将该变量初始化为null,因为null是一个空对象.如果这个变量还没有真正的保存对象,那么这个变量的值就应该是null,而不是其它的数据类型
 
 
Number     数据类型  它会值可以保存为  +0  或  -0  , +0  = -0 它们是相等的。
           可以保存为整数与浮点数。
           NaN Not a Number  这个值是表示本来要表示数值的操作数未返回数据的情况
任何涉及NaN的操作都会返回NaN;NaN与任何值都不相等,它与任何值比较都为false;
 
  • 方法:isNaN(param) 只接收一个参数,为了判断这个参数是否可以转换为数值 ,所有不能转换为数值的参数均返回false  
           
什么叫浮点数? 就是该数值必须包含一个小数点,而且小数点后面必须至少有一位数字。保存浮点数的内容空间是保存整数的 2倍 ,因此,只要遇到浮点数,我们就要把它转变为整数。
将浮点数转换为整数的常用方法是:e表示法 =》 e前面的数值 * 10
  • 方法: Math.round(数值)  接收一个数值参数,目的是把不同的数四舍五入至最接近的整数
         document.write(Math.round(0.6));    //1
         document.write(Math.round(12.9));   //13
         document.write(Math.round(0.4));    //0
 
           数值转换  可以把非数值转换为数值 = 一元加操作
 
  • 方法 a : Number()  转型函数,可以用于任何数据类型
  1. true => 1
  2. false => 0
  3. null => 0
  4. undefined => NaN
  5. "" => 0 ;"123" => 123; "0123" => 123; "holle wrold" => NaN;
  • 方法 b : parseInt(字符串, 基数)  [pa:z] 参数有2个  专门用于把字符串转成数值。基数:多少进制,无论什么情况下,都要写明要转换成什么进制的基数,默认十进制,它的基数就是10
          var num = parseInt("10",2);   //2
          var num = parseInt("10",8);   //8
          var num = parseInt("10",10);  //10
          var num = parseInt("22.5");   //22
  • 方法 c : parseFloat(字符串)             参数只有一个    专门用于把字符串转成数值,它只能解析十进制值,因此,它的参数只有一个,没有基数
           var num = parseFloat("22.34.5");    //22.34
           var num = parseFloat("0908.5");     //908.5
           var num = parseFloat("1234red");    //1234
           var num = parserFloat("22.5");      //22.5 
 
 
 
string    字符串
 
          转义字符:用于不可打印的特殊字符,通常用于表示一些功能:
            换行;     制表;      退格;       回车;    \斜杆
 
          转换字符串: 
  • 方法1:  toString(基数)   没有参数,但是有基数,要输出什么进制的值,改变基数即可。这个方法会通过基数改变输出的值。默认会输出基数为10的字符串。
          var num = 10;
          num.toString(2);    //转换为二进制字符串
          num.toString(8);    //转换为八进制字符串
          ... ...
    • 方法2: string(value)   转型函数,能够将任意的值转为字符串,没有基数。
     
 
 
Object    对象
 
var Obj = new Object();
 
 
操作符
 
~   非        返回数值的反码;
&   与        只有两个条件满足为true,才是true;只要有一个条件为false,就全部是false;
|   或        只有一个条件为true,就是true;
<<  左移      将数值的所有位向左移动指定的位数;
>>  右移      将数值的所有位向右移动指定的位数;
 
 
!   求反      无论这个值是什么类型,都会返回一个布尔值;
!!            第一个 !  是返回一个布尔值;第二个 ! 是对返回的布尔值求反;
               !false  //true;
               !"red"  //false,非空字符串为false;       !!"red"      //true
               !0      //true;                          !!0          //false
               !NaN    //true;                         !!NaN         //false
               !""     //true;                         !!""          //false
 
&&  逻辑与    如果第一个条件为true,还会对第二个条件进行求值;
              如果第一个条件为false,就直接跳出来了,不会对第二个条件进行求值;
 
||  逻辑或    如果第一个条件为true,就不会对第二个条件进行求值;
 
==  相等,则为true
!=  不相等,则为true
 
nuu == undefined     NaN != NaN     false == 0    true == 1     "5"  ==  5
 
a ? b : c   条件操作
 
a 为条件  b c 分别指不同的值;当条件满足时,值为b;当条件不满足时,值为c
 
=   赋值
,   逗号,一次声明多个变量,一次执行多条语句
 
var num = 1 , num2 = 2 , num3 = 3 , ...
 
 
 
语句  (使用while循环做不到的同样使用for循环也做不到)
 
if 语句                 条件判断                                if(条件){执行}
 
do-while 语句           先执行一次再根据条件判断                 do {执行} while {条件}
 
while 语句              执行前,先根据条件判断                   while (条件){执行}  条件的初始化变量,在外部
 
for 语句                执行前,先根据条件判断                   for(条件){执行}     条件的初始化变量,在内部
 
for-in 语句             要迭代的属性精准到一个对象或数组中        for ( 属性 in 对象 ){执行}
 
label 语句              添加标签                                 标签名 : for(){}
 
break 语句              立即退出循环
 
continue 语句           立即退出循环,退出后,会从循环的顶部继续执行
 
switch 语句             流控制,与break搭配使用                  switch(条件){case:....break;}
 
with 语句               将代码的作用域设置到一个特定对象中        with(共同的对象){执行}
          
                        var num = location.subString(1);
                        var num2 = location.hostName;
                        var num3 = location.href;
 
                        上面的代码,都包含有一个location对象,使用with语句:
     
                         with (location){
                              var num = subString(1);
                              var num2 = hostName;
                              var num3 = href;
                         }
 
原文地址:https://www.cnblogs.com/baiyygynui/p/5526104.html