变量
变量的初始化: 声明变量并赋值 (没有定义的变量被调用 is not defined;
定义没赋值的变量被调用undefined
; 清除变量存储空间 null
)
声明变量关键字 var 和 let
(var
与let
区别)let的特点: 1.存在块级作用域 2. 不存在声明提升 3. 不允许重复声明
声明常量 const
const
(常量 ) :基本数据类型 常量值不能改变
变量的命名规则
可以有字母,数字,下划线和$组成,但是不能以数字开头 严格区分大小写并且不能是关键字或保留字。
变量的数据类型:
基本数据类型:
数值(number
),字符串(string
),布尔(boolean
)(只含有true
和false
两个值),null
(定义了变量但赋值为空)和undefined
(定义了变量但未赋值)
复合数据类型:
对象(object
)
变量的类型转换:
1.显示转换 : Number
(字符型变量) 字符串(string
),布尔(boolean
) parseInt
(转换成整数) parseFloat
(转换成浮点型)
强制数据类型转换:
Boolean():
将其他的数据类型强制转换成布尔值——口诀:非0即真,非空即真。
Number():
将其他的数据类型强制转换成数字——【注】只有纯数字字符组成的字符串转数字,才能转为数字,其他都为NaN.
parseInt() :
1. 取整 (对于包含小数的字符串或包含字母的非纯数字字符串,只取整数部分) 2. 将别的进制转换为十进制——例:
var str1 ="110100";
alert(parseInt(str1,2)) //将二进制转换为十进制
String() || toString() //强制转换成字符串
var a =10 ;
a.toString(16) //将10转换成16进制
toString()//可以进制转换
2.隐式转换:
- 算术运算符进行转换
- 关系运算符 和其他运算符一样,当关系运算符操作非数值时要遵循一下规则:<1>两个操作数都是数值,则数值比较;<2>两个操作数都是字符串,则比较两个字符串对应的ASIIC码; 布尔值参与运算,隐式转换为0或1
typeof 返回类型 :
- 数值(
number
),字符串(string
),布尔(boolean
),undefined
(定义了变量但未赋值),对象(object
) typeof
原理:js在底层存储变量时,会在变量的机器码的低位1-3位存储其类型信息