JavaScript 语法基础 Part.2
5 运算符
(1) 浮点数的精度问题
计算机会先将这些数值转换为二进制,小数转换为二进制后,没法精确表示。所以不要直接判断两个浮点数是否相等! var result = 0.1 + 0.2; //结果不是 0.3,而是:0.30000000000000004console.log(0.07 * 100); //结果不是 7, 而是:7.000000000000001
(2) 递增和递减运算符
<1> 前置递增和后置递增运算符单独使用时,运行结果相同。
<2> 与其他代码联用时,执行结果会不同。前置运算符先自加,后运算;后置运算符先原值运算,后自加。
var e = 10;
var f = e++ + ++e;
//e++先用10运算,运算后e=11,++e先自加,再运算。
//第一次使用e++的e时,为原值;第二次使用e时,为原值+1。
console.log(f); //22
<3> 开发时,大多使用后置递增/减,并且代码独占一行,例如:num++; 或者 num--;
(3) 比较运算符
=:赋值,把右边给左边。==:判断,判断两边值是否相等(注意此时有隐式转换,例:console.log(18 == '18');//true。===:全等,判断两边的值和数据类型是否完全相同,例:console.log(18 === '18'); //false。!=:判断,判断两边值是否相等(注意此时有隐式转换,例:console.log(18 != '18');//false。!==:判断,只有相同类型才会比较,不同类型不比较,且无结果。
(4) 逻辑运算符
<1> 短路运算的原理:当有多个表达式(值)时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。
<2> 表达式1 && 表达式2
<2.1> 如果第一个表达式的值为真,则返回表达式2。console.log( 123 && 456 && 789 ); //789
<2.2> 如果第一个表达式的值为假,则返回表达式1,表达式2不会被执行。 console.log( 0 && 123 && 789 ); //0
<3> 表达式1 || 表达式2
<3.1> 如果第一个表达式的值为真,则返回表达式1,表达式2不会被执行。console.log( 123 || 456 || 789 ); //123
<3.2> 如果第一个表达式的值为假,则返回表达式2。console.log( 0 || 456 || 789); //789
(5) 运算符优先级
<1> 小括号:()
<2> 一元运算符:++、--
<3> 算数运算符:*、%、+、-...
<4> 关系运算符:<、>、>=...
<5> 相等运算符:==、!=、===、!==
<6> 逻辑运算符:先&&后||
<7> 赋值运算符:=
<8> 逗号运算符:,
6 流程控制
for (var i = 1; i <= 100; i++)
//i要用关键字声明。
7 数组
(1) 创建数组
//JS数组中可以存放任意类型的数据,例如字符串,数字,布尔值等。
<1> 利用new创建数组 var 数组名 = new Array()/Array(长度);
//此方式数组名必须大写。var 数组名 = new Array(1,2);
//等价于new Array[1,2],表示数组有两个元素,为1和2。一般不使用。
<2> 利用数组字面量创建数组var 数组名 = [];
//[]内可添加值来初始化。
(2) 数组的长度
使用"数组名.length"可以访问数组元素的数量。
(3) 数组中新增元素
<1> 通过修改length长度新增数组元素arr.length = 扩容后的长度;
//其中没有给值的空间,就是声明变量未给值,默认值就是undefined。
<2> 通过修改数组索引新增数组元素arr[长度(即最后一个有值索引后一个索引)] = 值;
8 函数
(1) 声明函数
<1> 自定义函数方式(命名函数)
function 函数名(形参1, 形参2 , 形参3...) { //JS中,形参不必声明var,直接写变量名即可。
函数体;
return 返回值; //如果函数没有return ,返回的值是undefined。
//return 只能返回一个值。如果用逗号隔开多个值,以最后一个为准。
//return 语句之后的代码不被执行。
}
//调用函数的代码既可以放到声明函数的前面,也可以放在声明函数的后面。
<2> 函数表达式方式(匿名函数)
//这是函数表达式写法,匿名函数后面跟分号结束。
//这个fn里面存储的是一个函数。
var fn = function(){
函数体;
return 返回值;
};
//函数调用的代码必须写到函数体后面。因为该方式本质上仍是变量。
(2) 调用函数
函数名或变量名(实参1, 实参2, 实参3...); //通过调用函数名来执行函数体代码
(3) 函数形参和实参个数不匹配问题
实参个等于形参个数:输出正确结果。
实参个数多于形参个数:只取到形参的个数。
实参个数小于形参个数:多的形参定义为undefined,结果为NaN。
(4) break、continue、return的区别
continue:跳出本次循环,继续执行下次循环。break:结束当前的循环体。return:不仅可以退出循环,还能够返回return语句中的值,同时还可以结束当前的函数体内的代码。
(5) arguments
<1> 概述
当我们不确定有多少个参数传递的时候,可以用 arguments 来获取。
在JavaScript中,arguments 实际上它是当前函数的一个内置对象。
所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的所有实参。
<2> arguments展示形式是一个伪数组,因此可以进行遍历。伪数组具有以下特点:
具有length属性。
按索引方式储存数据。
不具有数组的push(),pop()等方法。
<3> 使用var arg = arguments[0];

浙公网安备 33010602011771号