javaScript常见输出方式( 二 )


? 1.对于类型和类型来说, 可以通过 变量名称.()的方式来转换
? 2.可以通过(常量or变量);转换为字符串
? 3.还可以通过 变量or常量 + “” / 变量or常量 + ''转换为字符串
转换为数值类型
在中如果想将以上的四种基本数据类型转换为数值类型, 常用的方法有三种
? 1.通过(常量or变量);方式来转换
? 2.还可以通过数学运算中的+号和-号来转换
? 3.还可以通过(需要转换的字符串)/(需要转换的字符串)
转换为布尔类型
在中如果想将基本数据类型转换为布尔类型, 那么只需要调用(常量or变量)
运算符 算术运算符
+ - * / %
算术运算符的优先级和结合性
? * / % 优先级要高于 + -
? 无论是+ - * / %都是左结合性(从左至右计算)
加法运算的注意点
? 1.1任何非数值类型的数据在参与加法运算之前, 都会被自动的转换成数值类型之后, 再参与运算
? 1.2任何数据和NaN进行运算, 结果都是NaN
? 1.3任何数据和字符串相加, 都会被先转换成字符串之后再运算
减法运算的注意点
? 1.1任何非数值类型的数据在参与加法运算之前, 都会被自动的转换成数值类型之后, 再参与运算
? 1.2任何数据和NaN进行运算, 结果都是NaN
? 1.3任何数据和字符串相减, 都会先把字符串转换成数值类型之后再运算
乘法和除法运算的注意点
? 和减法运算的注意点一模一样
模(取余)运算注意点
? 格式: m%n = 余数
? 4.1如果m>n的, 那么就正常取余
? 4.2如果m
? 4.3如果n是0, 那么结果就是NaN
? 4.4取余运算结果的正负性, 取决于m而不是n
赋值运算符
什么是赋值运算符?
? 赋值运算符就是将等号右边的值存储到等号左边的变量中
赋值运算符的优先级和结合性
? 赋值运算符的优先级低于算数运算符
? 赋值运算符的结合性是右结合性(从右至左的计算)
? 赋值运算符的左边只能放变量, 不能放常量
自增自减运算符
自增运算符: ++
? 自减运算符: –
增和自减写在变量的前面和后面的区别?
? 写在变量的后面, 表示变量先参与其它的运算, 然后再自增或者自减
? 写在变量的前面, 表示变量先自增或者自减, 然后再参与其它的运算
自增自减运算符只能出现在变量的前面或者后面, 不能出现在常量或者表达式的前面或者后面
关系运算符
> < >=< >=1 ----> 2 ----> 3 ----> 4
? 2.4.除0级作用域以外, 当前作用域级别等于上一级+1
? 3.变量在作用域链查找规则
? 3.1先在当前找, 找到就使用当前作用域找到的
? 3.2如果当前作用域中没有找到, 就去上一级作用域中查找
? 3.3以此类推直到0级为止, 如果0级作用域还没找到, 就报错
ES6作用域链
? 1.1.全局作用域我们又称之为0级作用域
? 2.2.定义函数或者代码块都会开启的作用域就是1级/2级/3级/…作用域
? 2.3.会将这些作用域链接在一起形成一个链条, 这个链条就是作用域链
? 0 —> 1 ----> 2 ----> 3 ----> 4
? 2.4.除0级作用域以外, 当前作用域级别等于上一级+1
? 3.变量在作用域链查找规则
? 3.1先在当前找, 找到就使用当前作用域找到的
? 3.2如果当前作用域中没有找到, 就去上一级作用域中查找
? 3.3以此类推直到0级为止, 如果0级作用域还没找到, 就报错
? */
-预解析
预解析规则
? 2.1将变量声明和函数声明提升到当前作用域最前面
? 2.2将剩余代码按照书写顺序依次放到后面
注意点
? 通过let定义的变量不会被提升(不会被预解析)