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    字符串
 
          转义字符:用于不可打印的特殊字符,通常用于表示一些功能:
          \n   换行;   \t   制表;   \b   退格;    \r   回车;    \\斜杆
 
          转换字符串: 
  • 方法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;
                         }
 

javascript 红宝书笔记之数据类型的更多相关文章

  1. javascript 红宝书笔记之函数、变量、参数、作用域

    ECMAScript 不介意传进来多少个参数,也不介意传进来的参数类型.     理解参数:      命名的参数只提供便利,不是必需的.     ECMAScript 的变量包含两种不同的数据类型的 ...

  2. javascript 红宝书笔记之操作日期

    创建当日 日期对象   调用Date的构造函数而不传递参数的情况下,新创建的对象默认获取当前的日期和时间.   var now = new Date();   创建特定的日期和时间对象   Date. ...

  3. javascript 红宝书笔记之如何使用对象 如何操作数组

    对象定义  ===  引用类型,描述的是一类对象所具有的属性和方法     新对象的创建 方法     new + 构造函数       var person = new Object(); 对象字面 ...

  4. JS红宝书笔记——第一章 JavaScript简介

    1.JavaScript简史 Netscape公司决定开发一种客户端语言用来处理浏览器端简单的表单验证. Netscape公司派布兰登·艾奇(BrendanEich)为计划于1995年2月发布的Net ...

  5. 第5章 引用类型---JS红宝书书摘系列笔记

    在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起,描述的是一类对象所具有的属性和方法.而对象是某个特定引用类型的实例. 一.Object类型 可以通过Object构造函数创 ...

  6. 【转载】关于在vs2013中配置opengl红宝书第八版环境

     本文为转载 原文地址 http://blog.csdn.net/qq821869798/article/details/45247241 本人刚开始学习opengl,买了一本opengl红宝书第八版 ...

  7. 从今日起,我会把OpenGL红宝书上的例子用完整的代码形式写在我的博客中,

    1.使用教程:OpenGL红宝书第8版 2.使用的库工具:GLEW和GLFW 3.使用的IDE:vs2012 4.说说目的:完整的看一遍OpenGL,加深印象并且熟练掌握运用OpenGL 5.欢迎有相 ...

  8. OpenGl编程指南第7版(红宝书)环境配制

    环境 OS:win7 旗舰版SP1 64位 编译器: VS 2013 express 的cl 软件 glut. 在这个页面https://www.opengl.org/resources/librar ...

  9. [转] VS2015中跑OpenGL红宝书第八版的第一章示例代码,运行

    Ori Article Link OpenGL的东西快忘光了,把角落的第八版红宝书拿出来复习一下 从书中的地址下了个示例代码结果新系统(Win10+VS2015)各种跑不起来,懊恼之后在网上疯狂搜索资 ...

随机推荐

  1. 阿里云 CentOS6.5 ssh连接慢的解决方案

    我租了一台阿里云深圳的服务器,用的是CentOS6.5的系统,最近要在服务器上小改点代码,但是不管用private shell 还是securecrt工具连接,连上去后,都特别慢,经常敲一段代码要过个 ...

  2. MVC编写的新闻页面

    1.新闻发布系统 2.架构确立 3.数据表确立 4.分层 entity dao BaseDao sqlserver jar包 接口层(NewsDetailDAO) impl (NewsDetailDA ...

  3. 事件--c#

    以上是事件的几个操作. 事件由五个组件构成: 具体作用如下: 事件声明: event  委托类型 事件名:例子: public event EventHandler Elapsed; 还可同时声明几个 ...

  4. 封装jQuery Validate扩展验证方法

    一.封装自定义验证方法-validate-methods.js /***************************************************************** j ...

  5. Conherence Function

    来源: 部分来自wiki:https://en.wikipedia.org/wiki/Coherence_(signal_processing): 部分来自网络其它内容. The coherence  ...

  6. css position, display, float 内联元素、块级元素

    position属性:position属性指出一个元素的定位方法.有4种可能值:static, relative, absolute or fixed: static:默认值,元素按照在文档流中出现的 ...

  7. 华为acl(traffic-filter)和dhcp管理

    华为alc配置实例:-traffic-filter # 在VLAN100上配置基于ACL的报文过滤,允许源IP地址为192.168.0.2/32的报文通过,丢弃其他报文. <HUAWEI> ...

  8. linux ISO/IMG make

    sudo dd if=/PATH/*.ISO  of=/dev/sdb 1.制作启动U盘需要sdb,不能sdb1,否则会提示isolinux.bin文件丢失 2.TF卡,设置sdb1?忘了 /* sy ...

  9. lecture11-hopfiled网络与玻尔兹曼机

    Hinton课程第11课 这部分的课程算是个知识背景,讲述RBM的来源吧,毕竟是按照hopfield--BM-RBM的路线过来的. 因为水平有限,都是直译,如果纠结某句话,肯定看不懂,所以这些课程只需 ...

  10. lecture16-联合模型、分层坐标系、超参数优化及本课未来的探讨

    这是HInton的第16课,也是最后一课. 一.学习一个图像和标题的联合模型 在这部分,会介绍一些最近的在学习标题和描述图片的特征向量的联合模型上面的工作.在之前的lecture中,介绍了如何从图像中 ...