运算符
1 算术运算符 + - * / ++ -- %
console.log(1 + 2)
// 3
console.log('1' + 2)
// 字符串参与的加其实是拼接 '1' + '2' -> '12'
console.log(+8)
// 表示正值
console.log('12' - 2)
// 12 - 2 -> 10
console.log(20 * 2)
// 40
console.log(4 / 3)
// 1.333333333
console.log(4 / 2)
// 2
let x = 5
//let y = x++ // x++整体赋值给y,用的是x原有的值
let y = ++x // ++x整体赋值给y,用的是x加1后的值
// x++ // 让x在原有基础上加1
// ++x // 让x在原有基础上加1
console.log(x) // 6
console.log(y) // 6
let i = 3,
j = 4,
k
++i
j++
k = j++
console.log(i, j, k) // 4 6 5
// % 取模运算符
console.log(4 % 2) // 0
console.log(4 % 3) // 1
let num = 25
console.log(num % 5 == 0)
2 关系运算符 > < >= <= == === != !==
概念:两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值,作为比较运算的结果。
console.log(3>2) true
console.log(10 <= 10) true
== 不严格等于,只要内容相同即可
console.log(5 == 5) true
console.log(5 == '5') true
=== 严格等于,内容与类型都需要一样
注意:null在严格等于和不严格等于输出的结果都是true
NaN在严格等于和不严格等于输出的结果都是false
undefined在严格等于和不严格等于输出的结果都是true
console.log(5 === 5) // true
console.log(5 === '5') // false
console.log(null == null) // true
console.log(NaN == NaN) // false
console.log(undefined == undefined) // true
console.log(null === null) // true
console.log(NaN === NaN) // false
console.log(undefined === undefined)// true
console.log(null == undefined) // true
console.log(null === undefined) // false
null与undefined区别? js基础面试题
1.null为空值,会在将来指向某个值 undefined表示未定义
2.null在转化为数值型时0 undefined转化为数值型为NaN
3.null 通过 typeof 判断类型的时候结果的输出是 object ; 而 undefined 的类型是 undefined
!= 表示对==的否定
!===表示对===的否定
console.log(5 != '5') // false 对==的否定
console.log(5 !== '5') // true 对===的否定
3.逻辑运算符 && || !
概念:逻辑运算符是用来进行布尔值运算的运算符,其返回值也是布尔值。
表达式1&&表达式2
判断表达式1的值,转布尔类型假如为true,直接返回表达式2的值
表达式1的值转布尔类型假如为false,直接返回表达式1的值
console.log(5 > 3 && 10 < 5) // true&&false false
console.log(5 > 3 && 10 > 5) // true&&true true
console.log(5 == 3 && 10 < 5) // false&& false false
console.log(5 && 6) // 6
console.log(10 > 8 && 0) // 0
console.log('' && 100) //''
逻辑与短路现象
表达式1的值转布尔类型假如为false,直接返回表达式1的值,此时不会执行表达式2的值
let i = 3
console.log(null && ++i)
console.log(i) //3
|| 判断表达式1的值,转布尔类型假如为true,直接返回表达式1的值
表达式1的值转布尔类型假如为false,直接返回表达式2的值,
console.log(5 > 3 || 10 < 5) true
console.log(5 > 3 || 10 > 5) true
console.log(5 == 3 || 10 < 5) false
console.log(5 || 6) // 5
console.log(10 > 8 || 0) // true
console.log('' || 100) // 100
let j = 3
console.log(null || ++j)
console.log(j) //4
console.log(!true)
console.log(!0)
let num = 'hello'
console.log(!!num) // true
if语句
1 if单分支
if(条件) { 条件成立时候执行的语句}
执行过程 条件成立(转成布尔类型为true) 执行大括号里的代码,条件不成立,if什么也不执行,执行大括号后面的代码
成绩>=90 发个小红花
const score = 85
const score = +prompt('请输入你的成绩')
if (score >= 90) {
alert('一朵小红花奖励')
}
2 if双分支
const score = +prompt('请输入你的成绩')
if (score >= 90) {
alert('一朵小红花奖励')
} else {
alert('继续加油')
}
3 if多分支
>=90 A 80~90 B 60~80 C <60 D
const score = +prompt('请输入你的成绩')
if (score >= 90) {
alert('您的等级为A!!!')
} else if (score >= 80) {
alert('您的等级为B!!!')
} else if (score >= 60) {
alert('您的等级为C!!!')
} else {
alert('准备补考😭')
}
4 if嵌套if
const score = +prompt('请输入你的成绩')
if (score >= 90) {
alert('非常棒!!!')
if (score >= 95) {
alert('等级为A+')
} else {
alert('等级为A')
}
} else if (score >= 80) {
alert('您的等级为B!!!')
} else if (score >= 60) {
alert('您的等级为C!!!')
} else {
alert('准备补考😭')
}
5 三目运算符
格式 console.log (数值1 > 数值2 ? '真' :'假')
// ?:
console.log(5 > 20 ? '真' : '假')
// 求两个数最大值
let num1 = 10,
num2 = 20
num3 = 32
console.log(num1 > num2 ? num1 : num2)
let max = num1 > num2 ? num1 : num2
max = max > num3 ? max : num3
console.log(`max=${max}`)