一、JS变量
1. 变量的定义
变量:值可以改变的叫做变量
(1)声明变量:通过关键字(系统定义的有特殊功能的单词)var
声明变量的时候,同时给变量赋值,叫做初始化。
(2)变量赋值
(3)可以同时定义多个变量,变量之间要使用逗号隔开。
补充:
输出当前变量/常量的数据类型:
格式:typeof 变量/常量
JS是弱数据类型语言,容错率较高,变量被赋值成什么类型就是什么类型。不要在后续的代码里改变该变量的数据类型,很容易引起代码歧义。var temp; //temp是啥数据类型?不确定 temp = 12; //temp变量是数字类型 temp = "hello"; //temp变量变成了字符串类型
2. 标识符规则
标识符:用户自定义的变量名叫做标识符。变量名规律:
- 标识符必须由数字,字母、下划线和美元符号$组成。
- 不能以数字开头。
- 标识符区分大小写,age和Age这是两个变量
- 标识符必须见名思意。
3. 变量的数据类型
JS中的数据类型分为两大类:
(1)基本数据类型
- ① 数字Number(整数,浮点数为float),如:100 3.14
- ② 字符串:String,如:所有带双引号/单引号 ‘hello’ “hello”
- ③ 布尔值:Boolean,如:true false
- ④ 特殊数据类型:Null、Undefined、 NaN,如:null空、unde fined未声明
注意:
① 如果alert(abc)一个不存在的变量,会直接报错,而不是undefined,可见undefined和真正的未定义还是有些区别的。因为它是一种特殊类型。
② null也是一种值,但逻辑含义是没有值,它是对象Object类型。
③ 变量的类型只有在赋值后才能确定。
(2)复合数据类型
二、JS运算符
1. 运算符的种类
(1)算术运算符(+, -, *,/,%(取余数)
)
(2)字符串和变量的拼接(+
)
(3)关系运算符(<、>、<=、>=、==、===、!= !==
)
(4)逻辑运算符(&&与(且)、||或、!非
)
(5)赋值运算符(=、+=、-=、*=、/=、%=
)
(6)自增、自减(++a,、a++、--a,、a--
)
2. 算术运算符
运算符 |
|
示例 |
|
---|---|---|---|
+ | 加 | a=5+8 | |
- | 减 | a=8-5 | |
/ | 除 | a=20/5 | |
* | 乘 | a = 5*19 | |
% | 取模一两个数相除的余数 | 10%3=1 | |
++ | 一元自加。该运算符带一个操作数,将操作数的值加1。返回的值取决于++运算符位于操作数的前面或是后面 | ++x,x++ | ++x将返回x自加运算后的值。x++将返回x自加运算前的值 |
– | 一元自减。该运算符只带一个操作数。返回的值取决于–运算符位于操作数的前面或是后面 | –x,x– | –x将返回x自减运算后的值。x–将返回x自减运算前的值 |
注意:
- 任何类型的数据和字符串类型数据做相加操作的时候。其他数据类型会自动转换成为字符串类型。此时的相加操作不再是数学意义上加法,而是表示拼接的意思。
如果其中一个操作数是字符串的时候,+号叫做字符串拼接符。- 任何数据除了和字符串做相加运算外,先要将字符串转成数字再进行运算。
(1)与NaN做算数运算的结果始终都是NaN,包括NaN本身和NaN做运算结果也为NaN。
(2)字符串如果是纯数字字符串转成数字,否则转换成NaN。var tmp="您"+"好"; var tmp = "1"+ 1; var tmp = "h" + true; var tmp="h"+undefined; alert(tmp); //tmp is not defined (tmp变量没有声明。) var tmp=1-"2";//-1字符串"2"转成了数字2 var tmp = 1 - "2a"; //NaN not a number "2a"转成数字NaN
- 代码规范:
(1)注意层级缩进 tab =四个空格
;
,
后面都跟一个空格
(2)运算符=
+
前后都应该空空格。
(3)每一条语句后面都必须添加;分号。
(4)所有的括号成对输入,所有的双引号成对输入。
(5)一句话占一行
(6)缩进对齐:
- 同级对齐
- 子一级比上一级缩进4个空格
4. 赋值运算符
(1)赋值运算符用等于号(=)表示,就是把右边的值赋给左边的变量。
(2)复合赋值运算符通过x=的形式表示,x表示算术运算符。
5. 关系运算符
用于进行比较的运算符称作为关系运算符。如:小于(<
)、大于(>
)、 小于等于(<=
)、大于等于(>=
).相等(=
),不等(!=
)、全等(恒等)(===
)、不全等(不恒等)(!==
)
和其他运算符一样, 当关系运算符操作非数值时要遵循一.下规则:
(1)两个操作数都是数值,则数值比较;
(2)两个操作数都是字符串,则比较两个字符串对应的字符编码值(ASCII码表值);
逐位进行比较,直到比较出大小,终止比较。
(3)两个操作数有一个是数值,则将另一个转换为数值,再进行数值比较。
运算符 |
|
示例 |
---|---|---|
== | 等于。 如果两个操作数相等,则返回真。 |
a==b |
!= | 不等于。 如果两个操作数不相等,则返回真。 |
a != 5 |
> | 大于。 如果左边的操作数大于右边的操作数,则返回真。 |
var1>var2 |
< | 小于。 如果左边的操作数小于右边的操作数,则返回真。 |
var2 < var1 |
<= | 小于等于。 如果左边的操作数小于或等于右边的操作数,则返回真。 |
var2 <= 4 var2 <= var1 |
>= | 大于等于。 如果左边的操作数大于或等于右边的操作数,则返回真。 |
var1 >= 5 varl >= var2 |
在相等和不等的比较上,如果操作数是非数值,则遵循一下规则:
(1)一个操作数是布尔值,则比较之前将其转换为数值,false 转成0,true 转成1;
(2)一个操作数是字符串,则比较之前将其转成为数值再比较;
(3)一个操作数是NaN,则==
返回false,!=
返回 true;并且NaN和自身不等;
(4)在全等(===
)和全不等(!==
)的判断上,比如值和类型都相等,才返回true,否则返回false。
alert(1 == true); //true
alert(0 == false); //true
alert(20 == "20"); //true
alert(1 != NaN); //true
alert(NaN != NaN); //true
alert(20 === "20"); //false
alert(20 === Number("20")); //true
6. 逻辑运算符
运算符 | 值 | 说明 |
---|---|---|
与(&& ) |
expr1&&expr2 |
只有当exprl 和expr2 同为真时,才返回真(true).否则,返回假(false)。 |
或(|| ) |
expr1|| expr2 |
如果其中一个表达式为真,或两个表达式同为真,则返回真(true).否则,返回假(false)。 |
非( ! ) |
!expr |
如果表达式为真,则返回假(false).如果为假,则返回真(true). |
逻辑非(NOT): !
逻辑非运算符可以用于任何值。无论这个值是什么数据类型,这个运算符都会返回一个布尔值。它的流程是:先将这个值转换成布尔值,然后取反,规则如下:
(1)操作数是一个空字符串,返回true;
(2)操作数是-个非空字符串,返回false;
(3)操作数是数值0,返回true;
(4)操作数是任意非0数值(包括Infinity),false;
(5)操作数是NaN,返回true;
(6)操作数是undefined,返回true;
alert(!"); //true
alert( !"ss"); //false
alert(!0); //true
alert(!1); //false
alert( !Infinity) //false
alert( !NaN); //true
alert( !undefined); //true
注意:短路操作,与运算只要第一个为true便不再执行第二个,或运算只要第一个为false便不再执行第二个
8. 其他运算符
(1)字符串运算符
字符串运算符只有一个,即: “+”。它的作用是将两个字符串相加。规则:至少-一个操作数是字符串即可。
(2)逗号运算符
逗号运算符可以在一条语句中执行多个操作。
(3)三元(目)条件运算符
7. 一元运算符
只能操作一个值的运算符叫做一元运算符。
var age = ++box; /加后取值先执行加法运算,在取值
var height = box++; //加前取值先取值再执行加法运算
*其他类型应用一元运算符的规则
var box = '89';
box++; //90,数值字符自动转换成数值
var box = 'ab';
box++; //NaN,字符串包含非数值转成NaN
var box = false;
box++; //1 ,false转成数值0,累加就是1
var box= 2.3;
box++; //3.3,直接加1
8. 表达式概念
由运算符和操作数(变量或常量)组成的式子,叫做表达式
- 算术运算符组成的式子叫算术表达式
- 关系运算符组成的式子叫关系表达式或者条件表达式
- 逻辑运算符组成的式子叫做逻辑表达式
- ···
如: 2+3; a+5; c>3; a&&b等;