一、JS的自增和自减
1、自增++
(1)通过自增可以使变量在自身的基础上增加1
(2)对于一个变量自增以后,原变量的值会立即自增1
(3)自增分两种:后++(a++)和前++(++a),无论是a++还是++a,都会立即使原变量的值自增1
(4)a++:先使用a的值,在增加1,++a:先增加1,在使用a的值
var a=2;
a++;//先使用a的值,在增加1
console.log(a);
++a;//先增加1,在使用a的值
console.log(a);
console.log("a++="+ a++);
console.log("++a="+ ++a);
2、自减–
(1)通过自减可以使变量在自身的基础上减1
(2)自减分两种:后–(a–)和前–(--a),无论是a–还是–a,都会立即使原变量的值自减1
(3)a–:先使用a的值,在减1,–a:先减1,在使用a的值
var a=8;
a--;//先使用a的值,在减1
console.log(a);
--a;//先减1,在使用a的值
console.log(a);
console.log("a--="+ a--);
console.log("--a="+ --a);
二、JS的逻辑运算符
1、非运算“!”
(1)“!”可以用来对一个值进行非运算
(2)所谓非运算就是对一个布尔值进行取反操作,即:true变false,false变true
(3)如果对一个值进行两次取反,其值不会发生变化
var a=true;
//取反操作
a=!a;
console.log("a="+a);
a=!a;
console.log("a="+a);
(4)如果对一个非布尔值进行计算,则会将其转换为布尔值,然后再取反,因此可以利用这一特点,来将一个其他的数据类型转化为布尔值
(5)可以为一个任意数据类型进行两次取反,来将其转换为布尔值,其原理和boolean()函数一样
2、与运算“&&”
(1)“&&”可以对符号两侧的值进行“与”运算并返回结果
(2)运算规则:两个值中只要有一个值为false,就会返回false,只要两个值都为true时,才会返回true,如果第一个值为true时,会检查第二个值
(3)JS中的“与”属于短路的“与”,如果第一个值为false,则不会看第二个值
var a;
a=true&&false; //false
a=false&&true; //false
a=true&&true;//true
a=false&&false;//true
console.log(a);
3、或运算“||”
(1)“||”可以对符号两侧的值进行“或”运算并返回结果
(2)运算规则:两个值中只要有一个值为true,就会返回true,只要两个值都为false时,才会返回false,如果第一个值为false时,会检查第二个值
(3)JS中的“或”属于短路的“或”,如果第一个值为true,则不会看第二个值
var a;
a=true||false; //true
a=false||true; //true
a=true||true;//true
a=false||false;//false
console.log(a);
三、JS的非布尔值的与或运算
1、“&&”“||”“!”布尔值情况
(1)对于非布尔值进行与或运算时,会先将其转换为布尔值,然后再运算,并且返回原值
(2)与运算:如果两个值都为true,则返回后边的
var a=4&&5;
console.log("a="+a);//返回5
(3)与运算:如果两个值中有false,则返回靠前的false
var a;
a=0&&4; //0
a=4&&0; //0
a=NaN&&0; //NaN
a=0&&NaN; //0
console.log("a="+a);
(4)如果第一个值为true,则必然返回第二个值;如果第一个值为false,则直接返回第一个值
(5)或运算:如第一个值为true,则直接返回第一个值;如果第一个值为false,则返回第二个值
var a;
a=1||4; //1
a=1||0; //1
a=2||NaN; //2
a=NaN||0; //0
a=NaN||1; //1
console.log("a="+a);
四、JS的赋值运算符
1、赋值运算符:可以将符号右侧的值赋值给符号左侧的变量
2、赋值运算符类型
(1)+=:a +=5 等价于a=a+5
(2)-=:a -=5 等价于a=a-5
(3)*=:a =5 等价于a=a5
(4)/=:a /=5 等价于a=a/5
(5)%=:a %=5 等价于a=a%5
var a=100;
a += 4;
a -= 6;
a *= 6;
a /= 2;
a %= 7;
console.log("a="+a);
五、JS的关系运算符
1、通过关系运算符可以比较两个值之间的大小关系,如果关系成立就返回true,如果关系不成立则返回false
2、“>”大于符号:判断符号左侧的值是否大于右侧,如果关系成立就返回true,如果关系不成立则返回false
3、“>=”大于等于:判断符号左侧的值是否大于或等于右侧,如果关系成立就返回true,如果关系不成立则返回false
4、“<”小于符号:判断符号左侧的值是否小于右侧,如果关系成立就返回tr
ue,如果关系不成立则返回false
5、“<=”小于等于:判断符号左侧的值是否小于或等于右侧,如果关系成立就返回true,如果关系不成立则返回false
6、非数值的情况
(1)对于非数值进行比较时,会将其转换为数字后再进行比较,如果符号两侧的值都是字符串时,不会将其转换为数字进行比较,而是分别比较字符串中字符的Unicode编码
(2)比较两个字符串时,比较的是字符串的字符编码,比较字符编码时是一位一位进行比较,如果两位一样,则比较下一位,因此借用它来对英文进行排序
(3)如果比较的是两个字符串型的数字,可能会得到不可预期的结果,因此在比较两个字符串型的数字时,一定要进行转型,再进行比较
六、JS的Unicode编码表
1、JS:在字符串中使用转义字符输入Unicode编码,其格式为:\u四位编码
<script>
console.log("\u0989");
</script>
2、网页:格式:&#编码,这里的编码需要的是10进制
<body>
<h1 style="font-size: 200px;">◐</h1>
</body>
七、JS的相等运算符
1、相等运算符用来比较两个值是否相等,如果相等会返回true,否则返回false
var a=23
console.log(2==2); //true
console.log(a==4); //false
2、使用“”来做相等运算:当使用“”来比较两个值时,如果值的类型不同,则会自动进行类型转换,将其转换为相同的类型,然后在比较
var a=23;
console.log(a==2); //false
console.log("1"==1); //true
console.log(true=="1"); //true
console.log(null==0); //false
3、“!=”不相等:用来判断两个值是否不相等,如果不相等则返回true,否则返回false,不相等也会对变量进行自动的类型转换,如果转换后相等则会返回true,否则返回false
console.log(10!=5);//true
console.log(10!=10);//false
4、Undefined衍生自null,两个值进行比较时,会返回true
console.log(undefined==null); //true
5、NaN不和任何值相等,包括它本身,可以通过isNaN()函数来判断一个值是否属于NaN,如果是NaN则返回true,
console.log(NaN==NaN); //false
//利用isNaN()函数来判断一个数是否属于NaN
var a=NaN;
console.log(isNaN(a));//true
6、“===”全等:用于判断两个值是否全等,它和相等类似,不同的是它不会自动进行类型转换,如果两个值的类型不同,直接返回false
console.log("98"===98);//false
console.log(null===undefined);//false
7、“!==”不全等:用于判断两个值是否不全等,它和不等类似,不同的是它不会自动进行类型转换,如果两个值的类型不同,直接返回true
console.log("98"!==98);//true
七、JS的条件运算符
1、条件运算符也叫三元运算符,语法:条件表达式?语句1:语句2
2、执行流程:条件运算符在执行过程中时,首先对条件表达式进行求值,如果该值为true,则执行语句1,并返回执行结果,如果该值为false,则执行语句2,并返回执行结果
true?alert("语句1"):alert("语句2"); //语句1
false?alert("语句1"):alert("语句2"); //语句2
3、如果条件的表达式的求值结果是一个非布尔值,会将其转换为布尔值后再进行运算
//转换为true
"hello"?alert("语句1"):alert("语句2"); //语句1
//转换为false
""?alert("语句1"):alert("语句2"); //语句2
八、JS的运算符的优先级
1、逗号运算符“,”:使用“,”运算符可以分割多条语句,一般可以在声明多个变量时使用,在声明多个变量时可以为其变量进行赋值
var a,b,c,d;
var a=1,b=2,c=3,d=4;
2、JS中运算符优先级运算规则
(1)在运算符优先级表中越靠上优先级越高,优先级越高越优先计算,若优先级一样,则从左往右依次计算
九、JS的代码块
1、程序是由一条一条语句构成的,语句是按照自上而下的顺序一条一条执行的,在JS中可以使用“{}”来为语句进行分组
2、同一个“{}”中的语句称为是一组语句,要么都执行,要么都不执行,一个“{}”中的语句也称为一个代码块,在代码块的后边“{}”尾部不用再编写“;”了
//一个代码块
{
alert("hi"); //一条语句
console.log("hello"); //一条语句
document.write("good"); //一条语句
}
3、JS中的代码块,只具有分组的作用,没有其他的用途,代码块中的内容,在外部是完全可见的