2.1 数据类型

1)数值(number):整数和小数(比如1和3.14)
2)字符串(string):文本(比如Hello World)
注:单双引号必须成对出现
3)布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
4)undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
5)null:表示空值,即为此处的值为空
6)对象(object):各种值组成的集合

2.2 typeof关键字

typeof作用:检测数据类型

  1. var num = 10;
  2. var str = "Hello World";
  3. console.log( typeof num ); // number
  4. console.log( typeof str ); // string

2.3 加法运算符

2.3.1 定义

加法运算符(+)是最常见的运算符,用来求两个数值的和。

2.3.2 规则

1) js允许非数值的相加。

  1. console.log( true + true ); //2

2) 两个字符串相加,这时加法运算符会变成连接运算符。
3) 字符+非字符,非字符会转成字符串,再连接在一起。
注:任何类型与字符串相加都会被转化成字符串

2.3.3 重载

定义:加法运算符是在运行时决定,到底是执行相加,还是执行连接。也就是说,运算子的不同,导致了不同的语法行为,这种现象称为“重载”(overload)。

  1. '3' + 4 +5 // "345"
  2. 3 +4 +'5' // "75"

2.4 算术运算符

2.4.1 余数运算符

注:运算结果的正负号由第一个运算子的正负号决定。

  1. -1 % 2 // -1
  2. 1 % -2 // 1

2.4.2 自增和自减运算符

1)自增 ++
++n:先加再输出
n++:先输出再加
2)自减 —
—n:先减再输出
n—:先输出再减

2.5 布尔运算符

2.5.1 取反运算符 :!

取反运算符是一个感叹号,用于将布尔值变成相反值,即true变成false,false变成true。

  1. !true // false
  2. !false // true

对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值都为false。
underfined / null / false / 0 / NaN / 空字符串(’’)

2.5.2 三元运算符 :?true :false

可以替换if

2.6 类型转换

JavaStript是一种动态类型语言,变量没有类型限制,可以随时赋予任意值。

2.6.1 强制转换

强制转换主要指使用Number、String、Boolean三个函数,手动将各种类型的值,分布转换成数字、字符串或者布尔值。
1)Number( ):函数、方法、包装类型

  1. console.log( typeof Number('4') ); // number

NaN:在数字类型转换失败的时候呈现的结果
2)String函数可以将任意类型的值转化成字符串。
String方法的参数如果是对象,返回一个类型字符串;如果是数组,返回该数组的字符串形式。
3)Boolean函数可以将任意类型的值转为布尔值。
它的转换规则相对简单:除了以下五个值的转换结果为false,其他的值全部为true。
undefined / null / -0或+0 / NaN / ‘’(空字符串)

2.6.2 自动转换

遇到以下两种情况时,JavaScript 会自动转换数据类型,即转换是自动完成的,用户不可见。
1)不同类型的数据互相运算。

  1. 123 + 'abc' // "123abc"

2)对非布尔值类型的数据求布尔值。

  1. if ('abc') {
  2. console.log('hello')
  3. }

2.7 条件语句

2.7.1 条件语句if

表达式:if( 布尔值 ){
语句;
}

2.7.2 条件语句if…else

表达式:if( 布尔值 ){
语句;
}else{
语句;
}
对同一个变量进行多次判断时,多个if…else语句可以连写在一起。

2.7.3 条件语句Switch

多个if…else连在一起使用的时候,可以转为使用更方便的switch结构。
表达式:switch (表达式) {
case表达式:
语句;
break;
case表达式:
语句;
break;

default:
语句;
}
注:1)case代码块之中没有break语句,导致不会跳出switch结构,而会一直执行下去。
2)switch语句后面的表达式,与case语句后面的表示式比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。

2.8 循环语句

2.8.1 循环语句for

表达式:for ( 初始化表达式; 条件; 递增表达式 )
语句
// 或者
for ( 初始化表达式; 条件; 递增表达式 ) {
语句
}

2.8.2 循环语句while

While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。
表达式:while ( 条件 ) {
语句;
}

2.8.3 循环语句do…while

do…while循环与while循环类似,唯一的区别就是先运行一次循环体,然后判断循环条件。
表达式:do {
语句
} while ( 条件 );

2.8.4 break 语句和 continue 语句

break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行。
1)break
break语句用于跳出代码块或循环。
2)continue
continue语句用于立即终止本轮循环,返回循环结构的头部,开始下一轮循环。
break跳出循环不再执行,continue跳出当前循环,进行下一次循环。