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. switch结构的用法

    已知学生的名字和百分制分数.要求根据学生的百分制分数,分别采用"满分","优秀","良好","及格"和"不及格 ...

  2. POJ 1556 The Doors【最短路+线段相交】

    思路:暴力判断每个点连成的线段是否被墙挡住,构建图.求最短路. 思路很简单,但是实现比较复杂,模版一定要可靠. #include<stdio.h> #include<string.h ...

  3. flexslider.js和waypoints.js一起用时的巨坑

    Flexslider has a callback API where you can execute functions after various actions:https://github.c ...

  4. DBCP连接池配置参数说明

    <!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...

  5. 比较全的JavaScript倒计时脚本[xyytit]

    需要做一个功能,给特定的活动或者商品添加一个倒计时提示,在网上找了好些方法,总结了比较好的一些方法,以备后用: 1. 比较长时间的倒计时(如:距离2014年还有0年, 0月, 30天, 9小时, 41 ...

  6. android 下载文件

    import com.example.android.R; import android.app.Activity;import android.os.Bundle;import android.os ...

  7. 64位win7硬盘安装64位ubuntu 13.04

    最近本来是准备通过升级的方式把ubuntu从12.04升级到12.10再升级到13.04的,但是升级到12.10之后,可能是因为某一步的操作不当,出现无法进入系统的情况.不过还好的是升级之前保存了主要 ...

  8. 如何定位web前后台的BUG

    一.对系统整体的了解 Server端:jsp+Servlet+json 数据库:sql.MySQL.oracle等 前台: 涉及到 jstl,jsp,js,css,htm等方面 后台:servlet, ...

  9. django复习笔记2:models

    关于models,主要想说的是django shell以及生成测试数据的脚本这两部分. 一个models中的类相当于数据库的一张表,先看一个设置了外键的models. from django.db i ...

  10. 十个节省时间的MySQL命令

    十个节省时间的MySQL命令 2011-02-23 16:07 黄永兵 译 IT168 字号:T | T 编者在工作中积累起来了一些MySQL命令行客户端技巧,这些技巧或多或少会帮助您节省大量的时间. ...