字面量
变量
变量中并不存储任何值,而是存储值的内存地址!
常量
const
声明常量,常量只能赋值一次,重复赋值会报错。在JS中除了常规的常量外,有一些对象类型的数据我们也会声明为常量标识符
在JS中,所有可以由我们自主命名的内容,都可以认为是一个标识符
像 变量名 函数名 类名...
使用标识符需要遵循如下的命名规范:
通常会使用驼峰命名法
类名会使用大驼峰命名法
常量的字母会全部大写
数值(Number)
Infinity
是一个特殊的数值表示无穷NaN
也是一个特殊的数值,表示非法的数值(Not a Number)let a = 10 a = 10.5 a = 3.14 a = 9999999999999991111111111111111111 a = 99999 ** 99999 a = Infinity a = 1.11111111111111111111111111111111111111111111 a = 0.0000000000000000000000000000000000001 a = 0.1 + 0.2 a = 1 - "a" // NaN (Not a Number) a = NaN
大整数(BigInt)
n
结尾,它可以表示的数字范围是无限大a = 99999999999999999999999999999999999999999999999999n
其他进制的数字:
使用typeof
进行类型检查
let a = 10 let b = 10n console.log(typeof a) // "number" console.log(typeof b) // "bigint"
字符串(String)
let a = "Hello" a = "你好" a = '这是一个"字\\\\符串' a = "呵呵\t哈哈哈" a = "呵呵\n哈哈哈" a = "今天天气真不错!" a = `今天天气挺好的!` let name = "猪八戒" let str = `你好,${name}` let b = 10 // console.log(`b = ${b}`) let c = "5" c = "hhh" c = `aaa` console.log(typeof c)
JS中原始值一共有七种
类型转换指将一种数据类型转换为其他类型,将其他类型转换为(字符串、数值和布尔值)
将其他的数据类型转换为数值
使用Boolean()函数来将其他类型转换为布尔值
转换的情况:
运算符(操作符)
+
加法运算符-
减法运算符*
乘法运算符/
除法运算符**
幂运算%
模运算,两个数相除取余数JS是一门弱类型语言,当进行运算时会通过自动的类型转换来完成运算
当任意一个值和字符串做加法运算时,它会先将其他值转换为字符串,然后再做拼串的操作
可以利用这一特点来完成类型转换
可以通过为任意类型 + 一个空串的形式来将其转换为字符串,其原理和String()函数相同,但使用起来更加简洁
赋值运算符用来将一个值赋值给一个变量
一元的±
当我们对非数值类型进行正负运算时,会先将其转换为数值然后再运算
let a = -10 a = -a let b = '123' b = +b // b = Number(b) console.log(typeof b, b)
++ 自增运算符
let a = 10 // let b = a++ // console.log("a++ =", b) let b = ++a // console.log("++a =", b) // console.log(a) let n = 5 //5 + 7 + 7 let result = n++ + ++n + n // console.log(result)
-- 自减运算符
! 可以用来对一个值进行非运算
它可以对一个布尔值进行取反操作
true --> false
false --> true
如果对一个非布尔值进行取反,它会先将其转换为布尔值然后再取反
可以利用这个特点将其他类型转换为布尔值
类型转换
String()
+ ""
Number()
+
Boolean()
!!
let result = true && true // true result = true && false // false result = false && true // false result = false && false // false // true && alert(123) // 第一个值为true,alert会执行 false && alert(123) // 第一个值为false,alert不会执行 // true && true -> true result = 1 && 2 // 2 // true && false -> false result = 1 && 0 // 0 // false && false -> false result = 0 && NaN // 0 result = true || false // true result = false || true // true result = true || true // true result = false || false // false // false || alert(123) // 第一个值为false,alert会执行 true || alert(123) // 第一个值为true,alert不会执行 result = 1 || 2 // 1 result = "hello" || NaN // "hello" result = NaN || 1 // 1 result = NaN || null // null console.log(result)
关系运算符
>
用来检查左值是否大于右值>=
用来检查左值是否大于或等于右值<
用来检查左值是否小于右值<=
用来检查左值是否小于或等于右值注意:
let result = 10 > 5 // true result = 5 > 5 // false result = 5 >= 5 // true result = 5 < "10" // true result = "1" > false // true result = "a" < "b" // true result = "z" < "f" // false result = "abc" < "b" // true result = "12" < "2" // true result = +"12" < "2" // false // 检查num是否在5和10之间 let num = 4 // result = 5 < num < 10 // 错误的写法 result = num > 5 && num < 10 console.log(result)
==
相等运算符,用来比较两个值是否相等
===
全等运算符,用来比较两个值是否全等
!=
不等,用来检查两个值是否不相等
!==
不全等,比较两个值是否不全等
let result = 1 == 1 // true result = 1 == 2 // false result = 1 == '1' // true result = true == "1" // true result = null == undefined // true result = NaN == NaN // false result = 1 === "1" // false result = null === undefined // false result = 1 != 1 // false result = 1 != "1" // false result = 1 !== "1" // true console.log(result)
条件运算符
条件表达式 ? 表达式1 : 表达式2
// false ? alert(1) : alert(2) let a = 100 let b = 200 // a > b ? alert('a大!') : alert("b大!") let max = a > b ? a : b // alert(max)
和数学一样,JS中的运算符也有优先级,比如先乘除和加减。
可以通过优先级的表格来查询运算符的优先级
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence