数学运算符
- 概述:数学运算符也称为数学操作符。无非就是 + - * /
- 连字符:在数学运算中,+ 比较特殊。如果有字符串参与的语句,加号不是数学加法而是字符串时,在从左到右拼接字符串
- 特别注意:在JS中,不仅仅Number类型的数据可以参与数学运算。
- 其他类型(字符串、布尔、未定义、空对象)的数据也可以参与数学运算,只不过浏览器的解析器,自动将其他类型的数据“隐式转换”为数字参与数学运算
Number类型参与数值类型
- NaN是number类型的特殊值,NaN参与的运算结果都为NaN
- NaN+5
- NaN-5
- NaN*5
- NaN/5
- NaN%5
其他类型数据参与(不含字符串类型)
- 概述:JS当中,不仅仅Number类型的数值可以参与数学运算,其他类型的数据也可以参与数学运算
- 只不过,浏览器翻译会自动将这些数据“隐式转换"为数字参与运算
-
Boolean
Undefined
null
可以直接进行运算
-
String类型参与
- 概述:在JS当中,数学运算符一共五个:+ - * / %
- 特别注意:上面我们学过了+ ,那么其他的运算呢? - * / %
<script type="text/javascript">
console.log(Number("")); //0
console.log(Number("123")); //123
console.log(Number("123呜呜呜")); //NaN
console.log(Number("呜呜呜123")); //NaN
console.log(Number("呜呜呜")); //NaN
console.log(Number("666" - 333)); //333
console.log(Number(" " * 10)); //0
console.log(Number("呜呜呜" * 10 -999)); //NaN
</script>
比较运算符
- 概述:JS语言当中也有所谓的比较运算符(比较操作符)'>' ' '>=' ' '=='(不全判断-类型可以不同) ‘!=' '===='(全判断-类型都要一样)
- =号是赋值运算符,不是比较预算符
- JS 语言中比较运算符一共有八个
- 结果为真返回布尔值true,如果结果为假则返回false
- 特别注意:在生活学习当中,经常出现数字和数字进行大小比较,需要注意的是,JS这门语言当中,不仅仅是数字类型,其他类型也可以参与比较运算,也是隐式转换
数字类型比较
<script type="text/javascript">
console.log( 3>8 );//false
console.log( 8>3 );//true
console.log( 8==3 );//false
console.log( 8!=3 );//true
console.log( 8!=8 );//false
console.log( 8>=8 );//true
console.log( 8<=8 );//true
console.log( 8<=88 );//true
console.log( 8>=88 );//false
console.log( 8===8 );//true
console.log( 8=='8' );//true
console.log( 8==='8' );//false
</script>
特殊数字类型比较
console.log( Infinity > NaN );//false
console.log( Infinity == NaN );//false
console.log( Infinity < NaN );//false
console.log( Infinity < 999 );//false
console.log( Infinity > 999 );//true
console.log( Infinity <= 999 );//false
console.log( Infinity >= 999 );//true
console.log( Infinity != 999 );//true
console.log( NaN >= 999 );//false
console.log( NaN <= 999 );//false
console.log( NaN < 999 );//false
console.log( NaN > 999 );//false
console.log( NaN != 999 );//true
console.log( NaN != 'NaN' );//true
console.log( NaN == 'NaN' );//false
console.log( NaN === 'NaN' );//false
console.log( Infinity != 'Infinity' );//false
console.log( Infinity == 'Infinity' );//true
console.log( Infinity === 'Infinity' );//false
console.log( NaN == NaN );//false
console.log( NaN === NaN );//false
console.log( Infinity == Infinity );//true
console.log( Infinity === Infinity );//true
其他类型的数据参与比较(布尔、未定义、空对象)
- 其他类型的数据参与比较运算的时候,需要“隐式转换”为数字参与比较运算
console.log( null == null );//true
console.log( null === null );//true
console.log( null != null );//false
console.log( null == 'null' );//false
console.log( null === 'null' );//false
console.log( null != 'null' );//true
console.log( null > 999 );//false
console.log( null < 999 );//true
console.log( true == true );//true
console.log( true === true );//true
console.log( true != true );//false
console.log( true == 'true' );//false
console.log( true === 'true' );//false
console.log( true != 'true' );//true
console.log( true > false );//true
console.log( true < false );//false
console.log( true == false );//false
console.log( true === false );//false
console.log( true != false );//true
console.log( undefined > NaN );//false
console.log( undefined < NaN );//false
console.log( undefined == NaN );//false
console.log( undefined === NaN );//false
字符串类型比较
- 概述:字符串也可以比较运算
- 其他类型的数据(数字、布尔、未定义、空对象)和字符串进行比较。通过“隐式转换“为数字进行对比
- 字符串和字符串进行比较,通过ACSII进行对比,通过从左到右一个个字符进行比较
- ACSII知识点:0~9<A~Z<a~z
console.log( 123 > '666' );//false
console.log( true > '666' );//false
console.log( false < '666' );//true
console.log( null < '666' );//true
console.log( null > '666' );//false
console.log( null == 0 );//false
console.log( null === 0 );//false
console.log( null > '' );//false
console.log( null == '' );//false
console.log( null === '' );//false
console.log( false > '' );//false
console.log( false == '' );//true
console.log( false === '' );//false
console.log( false > null );//false
console.log( false == null );//false
console.log( false === null );//false
console.log( "2b" > "3c" );//false
console.log( "ace" > "afe" );//false
console.log( "ace" > "acef" );//false
console.log( "123EAA" > "123AAAAAA" );//true
console.log( "小明" === "小明" );//true
逻辑运算符
- 概述:在JS中有逻辑运算符的,一共是3个,与&& 或|| 非!
- JS当中一般情况下布尔值参与逻辑运算,但是其他类型的数值也可以逻辑运算,只不过浏览器汇总的解析器将其他类型“隐式转换”为布尔类型参与逻辑运算
布尔类型
与A && B
- 两个同时为真的时候返回的结果才为true,否则为false
console.log( true && true );//true
console.log( true && false );//false
console.log( false && false );//false
或 A || B
- 两者有一个为真返货true,两个为false返回false
console.log( true || true );//true
console.log( true || false );//true
console.log( false || false );//false
非!A
- 置反
console.log( !true );//false
console.log( !!true );//true
console.log( !false );//true
console.log( !!false );//false
其他类型数据参与
- 概述:JS语言当中,其他类型数据(数字、字符串、未定义、空对象)也可以参与逻辑运算
- 这种非正常现象,返回的结果可能不是布尔值。是优于其他类型数据参与逻辑运算的时候,浏览器解析器会进行“隐式转换“为布尔值进行参与
- 出来数值中除了NaN和0是false,其他都是true
- 空字符串为false,非空字符串为true
console.log( Boolean(0) );//false
console.log( Boolean(1) );//true
console.log( Boolean(666) );//true
console.log( Boolean(-666) );//true
console.log( Boolean(Infinity) );//true
console.log( Boolean(undefined) );//false
console.log( Boolean(NaN) );//false
console.log( Boolean('') );//false
console.log( Boolean(' ') );//true
console.log( Boolean('666') );//true
console.log( Boolean(null) );//false
逻辑与
- 结合串联和并联电路的思想
- 逻辑与,如果串联A灯泡亮了(true),电流会流到B,结果为B
- 逻辑与,如果串联A灯泡坏了(false),电流只会流到A,结果为A
console.log( 1 && 2 );//2
console.log( 2 && 1 );//1
console.log( NaN && 1 );//NaN
console.log( NaN && null );//NaN
console.log( Infinity && 1 );//1
console.log( Infinity && null );//null
console.log( 1 && Infinity );//Infinity
console.log( null && Infinity );//null
console.log( null && NaN );//null
console.log( NaN && NaN );//NaN
console.log( null && null );//null
console.log( "张三" && "李四" );//李四
console.log( '' && Infinity );//返回为:空
console.log( Infinity && '' );//返回为:空
逻辑或
- 结合串联和并联电路的思想
- 逻辑或,如果串联A灯泡亮了(true),电路完成,结果为A
- 逻辑或,如果串联A灯泡坏了(false),电流还会流到B,结果为B
console.log( 1 || 2 );//1
console.log( 2 || 1 );//2
console.log( NaN || 1 );//1
console.log( NaN || null );//null
console.log( Infinity || 1 );//Infinity
console.log( Infinity || null );//Infinity
console.log( 1 || Infinity );//1
console.log( null || Infinity );//Infinity
console.log( null || NaN );//NaN
console.log( NaN || NaN );//NaN
console.log( null || null );//null
console.log( "张三" || "李四" );//张三
console.log( '' || Infinity );//Infinity
console.log( Infinity || '' );//Infinity
提高
console.log( 3 > 6 && 99 < 22 );//flase
console.log( 3 < 6 || 99 < 22 );//true
console.log( "小明" || 99 < 22 );//小明
console.log( "小明" && 99 < 22 );//false
console.log( "小明" && 99 > 22 );//true
console.log( "小明" && 99 > 22 || null );//true
console.log( "小明" && null || 99 > 22 );//true
console.log( "小明" || 99 > 22 && null );//小明
console.log( null || 99 > 22 && "小明" );//小明
console.log( Infinity || 99 > 22 && "小明" );//Infinity
if条件语句
- 概述:在JS语言当中,是有所谓的流程控制语句。流程控制语句:条件语句、循环语句
- 如果程序中出现一种或者多种情况进行选择的时候,只能选择某一个符合条件的分支去执行了,这样的语句成为条件语句
基本使用
if(条件){
代码
}
- 小括号条件一般是布尔值、其他类型数值、运算计算完结果
- 大括号里面的是执行的代码
- 如果条件为真的时候,才会执行大括号里面的代码,为假则不执行
- if条件中一般需要布尔值,但是其他类型的数据可以参与,会“通过隐式转换”来判断
用上节的语句作为条件
if(Infinity || 99 > 22 && "小明"){
alert("这里条件是(Infinity || 99 > 22 && '小明')");
}
if("小明" || 99 > 22 && null){
alert("这里条件是('小明' || 99 > 22 && null)");
}
下面条件不成立
if('3 > 6 && 99 < 22'){
alert("这里条件是(3 > 6 && 99 < 22)");
}
if(''){
alert("这里条件是('')");
}
if(null){
alert("这里条件是(null)");
}
if(NaN){
alert("这里条件是(NaN)");
}
else关键字
if(条件){
代码
}else{
代码
}
- 关键字else可以结合if语句一下使用,不是必须的。
- else关键字(否则),如果条件不成立,则会执行else后面的代码
if(NaN){
alert("这里条件是(NaN)");
}else{
alert("这里是else");
}
var num = prompt("请输入一个数字:")
if(num % 2 == 0 ){
alert("这是一个偶数");
}else{
alert("这是一个奇数");
}
多分支if条件语句
- 概述:多分支if条件语句,是if条件语句的升级版,在多种情况下,选择其中一个符合条件的分支去执行
if (条件){
代码
} else if (条件) {
代码
} else if (条件) {
代码
}
var num = prompt("请输入您的成绩:")
if(num > 90 ){
alert("您的成绩是优秀");
}else if( num >= 60){
alert("您的成绩是及格");
}else if( num < 60){
alert("您的成绩不及格");
}else{
alert("请输入正确的成绩")
}
if条件语句的嵌套使用
- if条件语句中结构体内可以书写任意代码,甚至可以咋内部书写一个条件语句。
- 特别注意:如果嵌套在内部条件语句执行,外部条件符合条件才行
var sex = prompt("请输入您的性别:")
var age = prompt("请输入您的年龄:")
if(sex == "男" ){
if(age >= 22){
alert("兄弟你符合结婚年龄");
}else{
alert("兄弟再等等");
}
}else{
if(age >= 18){
alert("美女你符合结婚年龄");
}else{
alert("美女别那么着急");
}
}