心里有一束光,生活就充满希望
一、变量
1.概念
变量是计算机用来存储数据的容器,可以保存任意的数据类型,松散类型。
2.关键字
- var:声明的变量是松散类型,变量的作用域为全局作用域或者函数作用域,会有变量提升。
- let:也是松散类型,let的作用域是块级作用域,并且不允许同一个作用域重复声明;由于let块级作用域特性,在循环体重使用可以避免循环体外的变量污染,同时也可以保证循环体内部代码块值的正确性。使用let会出现暂时性死区。
- const:`const`和`let`的行为基本一致,但是在声明时必须初始化该变量的值,并且不允许修改`const`声明值的引用地址。
- * 注意:使用`let’和`var’声明同名,变量同样会报错,声明冗余。
3. 全局声明
在全局作用域使用`var’声明会自动成为`window'对象的属性,但是使用`let 不会成为`window 对象的属性。
4. 变量的提升
可以提前使用变量,后面在声明;因为JS有预解析,在执行所有代码前,会于都所有变量的定义。在变量提升时,只提升定义,不提升变量的值。
5.命名规范
- 严格区分大小写
- 不能用关键字和保留字
- 只能字母、数字、下划线_、美元符号$,且数字不能开头。
- 遵循驼峰命名法
二、数据类型
1.分类
数据类型分为 基本数据类型 和 复杂数据类型;
基本数据类型有数字型,字符串型,布尔型,未定义,空;
复杂数据类型有object、function、array、Date、regExp等。
2.基本数据类型
(1)number数值型
指所有的数字。
* 注意:NAN也是数字型,表示表示不是数值的数字类型(本来应该返回数值但由于出错没正确返回的值),NAN不等于它本身,判断是否是NAN需要调用isNAN()函数,能成功转的返回false,不能转的为true。
(2)string字符串型
- 指人类的自然语言,需要引号包裹。
- 字符串拼接:a、可以用加号拼接多个字符串或者变量。b、模板字符串:`${变量名}`。
- 符串的length属性:检测字符串的长度。
(3)Boolean布尔型
值为true和false,判断真假
(4)undefined未定义型
已声明但不赋值的变量,默认值都是undefined
(5)null空
赋值了,但内容为空;在声明一个值为对象类型时,可以使用null来初始化。
3.typeof数据类型检测
<script>
let num = 123;
let str = 'hello';
let n = '';
console.log(typeof num) //返回number
console.log(typeof str) //返回string
console.log(typeof n) //返回string
console.log(typeof true) //返回boolean
console.log(typeof null) //返回object
console.log(typeof undefined) //返回undefined
</script>
4.隐式转换
- 某些运算符被执行时,系统内部自动将数据类型进行转换,这种转换称为隐式转换。
转换规则:+ 号两边只要有一个是字符串,都会把另外一个转成字符串;除了+以外的算术运算符 比如 - * / 等都会把数据转成数字类型。
5.显示转换
(1)转换为数值型
- Number(数据)转为数字
- Parseint(数据)转为整数
- parseFloat(数据)转换为浮点数
(2)转换为字符型
- String(数据)
- 变量.tostring()
三、表达式
1.表达式的种类:算术、关系、逻辑、赋值。
2.算术运算符
- 主要包括加、减、乘、除、取余
乘除取余优先级高于加减,有括号先算括号里
3.赋值运算符
赋值 = :将等号右边的值赋值给左边变量
快捷赋值:+=、-=、*=、/=、%=,在原数值基础上进一步运算
自增运算:++
- 自减运算:--
- * 注意:自增和自减有前置运算和后置运算,前置运算(++a)先加减后使用,后置运算(a++)先使用后加减。
4.比较运算符(关系运算符)
- 关系运算符有:>、<、>=、<=、==、===、!==
- >、<、>=、<=和数学里面的比较运算符性质一样
- ==判断左右两边的值是否相等(会进行饮食转换后进行比较)
- ===判断两边的类型和值是否相等
- != 不相等
- !==左右两边是否不全等
- * 注意:NAN不自等;尽量不要比较小数,因为有精确度的问题;比较结果为布尔型,只会得到true和false。
- * 拓展:isNaN()函数可以判断变量的值是否为NAN,只要传入的参数number()的执行结果为NAN,则isNaN()函数返回的结果就是true。
5. 逻辑运算符
- && 逻辑与:都真才真
- || 逻辑或:有真则真
- !逻辑非:置反运算,真为假,假为真。
- 逻辑运算符里的短路:&&逻辑与左边为false就短路,||逻辑或左边为true就短路。
- 逻辑运算的优先级:非!> 与&& > 或||
6.运算符的优先级
非运算 > 算术运算 > 关系运算 >相等运算 > 逻辑运算