JavaScript 语法基础 Part.2

5 运算符

(1) 浮点数的精度问题

计算机会先将这些数值转换为二进制,小数转换为二进制后,没法精确表示。所以不要直接判断两个浮点数是否相等!  
var result = 0.1 + 0.2; //结果不是 0.3,而是:0.30000000000000004
console.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];

posted @ 2023-05-10 17:18  10kcheung  阅读(29)  评论(0)    收藏  举报