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() 转型函数,可以用于任何数据类型
- true => 1
- false => 0
- null => 0
- undefined => NaN
- "" => 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;
}