JS笔记(02)

总结01:代码在运行过程中,先提取var所声明的变量,然后再依次往下运行,在遇到没有声明和赋值(存值)的变量是程序就会报错,后面将不会运行。

表达式

1.原始表达式

原始表达式包含语句、关键字(保留字)和变量。

例如:

1; 1.02; 'hello world!';//直接量

var arr1 = [10, 203, 4]//数组初始化表达式

表达式是程序的最小单位 随处可见  给计算机表达指令的一种形式就是表达式  。

一元运算符

定义: 只能操作一个值的操作符叫做一元操作符,是 ECMAScript中最简单的操作符。

1.递增操作符

(1)在使用前置递增操作符给一个数值加 1 时,要把两个加号(++)放在这个数值变量前面。

例如:

var a=5;++a;在执行完这个代码以后,a的值就变成了6。

(2)在使用后置递增操作符给一个数值加1时,就要在数值变量后面加上两个加号(++)。

例如: 

var a=5;a++;在执行完这个代码以后,a的值也变成了6。

但是在做赋值运算时,前置和后置运算符就会有区别。

例如:

var a=5;b=++a;在给b赋值时是先给a加上1后再取出a的值赋值到b身上,这时b的值就为6,a=6。var a=5;b=a++;而这个表达式在给b赋值时就是先取出a的值赋值给b,然后再给a加上1,此时b为5,a为6。

2.递减操作符

递减操作符与递增操作符类似

例题:var a=2;var b=a--;var c=++b-++a+--b+a+b;此时a b c分别为多少?

a=2 => b=2 => a=1 => b=3 => c=3-++a+--b+a+b => a=2 => c=3-2+--b+a+b => b=2 =>  c=3-2+2+a+b => c=3-2+2+2  ;所以a=2,b=2,c=7。

在做这种类型的题时要搞清楚是先取存后加减和还是先加减后取存。

逻辑与

1.逻辑与操作符由&&组成,var C=A&&B;在这个表达式中,当A的表达式判定结果为真时,此时C的结果就是B的表达式;而当A的表达式判定结果为假时,C的结果就为A表达式,B表达式将不会运行。对于布尔值,只有当两个操作数都为ture时才会返回ture,否则返回false。

2.逻辑与操作可以应用于任何类型的操作数,而不仅仅是布尔值,在有一个操作数不是布尔值的情况下,逻辑与操作就不一定返回布尔值。

此时,它遵循下列规则:

  • 如果第一个操作数是对象,则返回第二个操作数;

  • 如果第二个操作数是对象,则只有在第一个操作数的求值结果为 true 的情况下才会返回该对象;

  • 如果两个操作数都是对象(或非0数),则返回第二个操作数;

  • 如果有一个操作数是 null,则返回 null;

  • 如果有一个操作数是 NaN,则返回 NaN;

  • 如果有一个操作数是 undefined,则返回 undefined;

  • 如果有一个操作数是 0 ,则返回0;

逻辑或

1.逻辑或操作竖线符号(||)表示,有两个操作数,例如:var a = A || B; 当A的表达式布尔值判定为真时,a就是A的表达式,B将不再运行;而当A的布尔量判定结果为假时,a就为B的表达式。

2.与逻辑与操作相似,如果有一个操作数不是布尔值,逻辑或也不一定返回布尔值;此时,它遵循下列规则:

  • 如果第一个操作数是对象,则返回第一个操作数;

  • 如果第一个操作数的求值结果为 false,则返回第二个操作数;

  • 如果两个操作数都是对象(或非0数),则返回第一个操作数;

  • 如果两个操作数都是 null,则返回 null;

  • 如果两个操作数都是 NaN,则返回 NaN;

  • 如果两个操作数都是 undefined,则返回 undefined。

加减运算符

1.加法

(1)当两个操作符都为数值时,执行常规的加法操作操作,例如:var a=2;var b=6;var c=a+b;此时c的值为8。

(2)当两个操作符中有一个为字符串时:

  • 如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来;

  • 如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来;如果有一个操作数是对象、数值或布尔值,则调用它们的 toString()方法取得相应的字符串值,然后再应用前面关于字符串的规则。对于 undefined 和 null,则分别调用 String()函数并取得字符串"undefined"和"null"。

(3)而当两个操作符中都不为number的操作数时,根据下列规则返回结果:

  • 如果有一个操作数是 NaN,则结果是 NaN;

  • 如果是 Infinity 加 Infinity,则结果是 Infinity;

  • 如果是-Infinity 加-Infinity,则结果是-Infinity;

  • 如果是 Infinity 加-Infinity,则结果是 NaN;// Infinity +(- Infinity )=NaN

  • 如果是+0 加+0,则结果是+0;

  • 如果是-0 加-0,则结果是-0;

  • 如果是+0 加-0,则结果是+0;

2.减法

减法运算会把元素转化为数字然后运算,例如: var a = "90"; var b = -(-a);console.log(b);其打印结果为90。

特殊规则,如下所示:

  • 如果两个操作符都是数值,则执行常规的算术减法操作并返回结果;

  • 如果有一个操作数是 NaN,则结果是 NaN;

  • 如果是 Infinity 减 Infinity,则结果是 NaN;//infinity-infinity=NaN

  • 如果是-Infinity 减-Infinity,则结果是 NaN;

  • 如果是 Infinity 减-Infinity,则结果是 Infinity;

  • 如果是-Infinity 减 Infinity,则结果是-Infinity;

  • 如果是+0 减+0,则结果是+0;

  • 如果是+0 减-0,则结果是-0;//+0-(-0)=(-0)

  • 如果是-0 减-0,则结果是+0;

  • 如果有一个操作数是字符串、布尔值、 null 或 undefined,则先在后台调用 Number()函数将其转换为数值,然后再根据前面的规则执行减法计算。如果转换的结果是 NaN,则减法的结果就是 NaN;

  • 如果有一个操作数是对象,则调用对象的 valueOf()方法以取得表示该对象的数值。如果得到的值是 NaN,则减法的结果就是 NaN。如果对象没有 valueOf()方法,则调用其 toString()方法并将得到的字符串转换为数值。

关系操作

定义:关系运算符用于检测两个值之间的关系,也称之为 布尔表达式,总是返回一个布尔值true或false。

1.比较运算符

小于(<) 、大于(>) 、小于等于(<=)和大于等于(>=)这几个关系操作符用于对两个值进行比较,其结果都返回一个布尔量。例如:var a = 20;var re4 = (18 <= a);console.log(re4);其打印结果为ture。

而当关系操作符的操作数使用了非数值时,也要进行数据转换或完成某些奇怪的操作。以下就是相应的规则。

  • 如果两个操作数都是数值,则执行数值比较。

  • 如果两个操作数都是字符串,则比较两个字符串对应的字符编码值。

  • 如果一个操作数是数值,则将另一个操作数转换为一个数值,然后执行数值比较。

  • 如果一个操作数是对象,则调用这个对象的 valueOf()方法,用得到的结果按照前面的规则执行比较。如果对象没有 valueOf()方法,则调用 toString()方法,并用得到的结果根据前面的规则执行比较。

  • 如果一个操作数是布尔值,则先将其转换为数值,然后再执行比较。

 

2.相等运算符

(1)相等

相等操作符由两个等于号(==)表示,如果两个操作数的数值相等,则返回 true,否则返回false。在转换不同数据类型时的规则如下:

  • 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false 转换为 0,而true 转换为 1;

  • 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;

  • 如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf()方法,用得到的基本类型值按照前面的规则进行比较;

  • null 和 undefined 是相等的。

  • 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值(null == 0为false)。

  • 如果有一个操作数是 NaN,则相等操作符返回 false,而不相等操作符返回 true。重要提示:即使两个操作数都是 NaN,相等操作符也返回 false;因为按照规则, NaN 不等于 NaN。NaN!=r任何-->

  • 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回 true;否则,返回 false。

(2)全等

全等操作符由 3 个等于号(===)表示,当两个操作数的数值和数据类型都相等的情况下才会返回 true,否则为false。例如: var a=200;var b="200";var a===b;其结果返回值为false,因为a和b的数据类型不一样,a为number,而b为string。

3.in运算符

检查右侧对象里面是否拥有左侧属性名,如果有返回true;反之,返回false。例如

 var obj = { age: 25, name: "karen" };var str1 = "age";var str2 = "life";此时返回值只有一个ture。

4.instanceof运算符

检查左侧的对象是否是右侧类的实例,如果是返回true;

如果一个对象是一个“父类”的子类的实例,则一样返回true;

三目运算符

三目运算符类似于D=A?B:C,A B C都是表达式,A表达式判定为布尔值的真时,D就会执行B表达式,终止运行C的表达式;而当A表达式判定为布尔值的假时, D就会执行C表达式。

例如:

 var a = 20;var re = (a + 100) ? (b = 200) : (c = 90);此时a的返回值为20,b为200,而?卡面的表达式返回值为真,则re就会执行?后面紧挨着的表达式,所以re的返回值为200,而:后面的表达式将不再运行,所以c的返回值就时undefined。

赋值操作符

在等于号(=)前面再添加乘性操作符、加性操作符或位操作符,就可以完成复合赋值操作。

每个主要算术操作符(以及个别的其他操作符)都有对应的复合赋值操作符。这些操作符如下所示:

  • 乘/赋值(*=);

  • 除/赋值(/=);

  • 模/赋值(%=);

  • 加/赋值(+=);

  • 减/赋值(-=);

例如:var a = 10;a+=20;含义就是a=a+20,则a的值就为30。

逗号操作符

使用逗号操作符可以在一条语句中执行多个操作, 逗号隔开的每一个表达式都要运行一遍,最后一个表达式作为整个逗号表达式的结果。例如:var num = (5, 1, 4, a=8, 0); // num 的值为 0,但是打印a将不会报错,因为a=8会运行并且隐式声明。

条件语句

条件语句用于基于不同的条件来执行不同的动作 ,在js开发过程中,if (表达式) { }中的表达式会被判定为布尔值==>Boolean(表达式)。而我们常用的条件语句如下:

  • if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码

  • if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码

  • if...else if....else 语句- 使用该语句来选择多个代码块之一来执行

  • switch 语句 - 使用该语句来选择多个代码块之一来执行

for循环语句

1.for循环语句是最常用的循环语句之一,for循环通过设置循环计数器,重复执行一段代码块,直到计数器达到某个指定值。例如:   for (A; B; C) { E }  的语法规则为:执行A,执行B表达式并判定其布尔结果,如果为假for整体代码执行结束;如果为真执行E后执行C然后再返回B以此循环,直至B的表达式布尔结果为假for整体代码执行结束。例如:for (var i = 0; i < 4; i = i + 1) { console.log(i)  }其代码运行结果为0,1,2,3。

2.双for循环语句是指在for循环语句中嵌套一个循环语句,例如: for (var n = 1; n <= 9; n++) { for (var i = 1; i <= 9; i++) { var re=`${i}*${n}=${i * n}`  console.log(re)  }  }  其打印结果为99乘法表。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值