字面量 & 变量
- 字面量就是一些不可改变的值
- 变量 可通过变量对字面量进行描述
- var , 变量提升,可重复声明变量
- ES6
- 不能重复声明,具有块级作用域,变量不会提升
- let , 可修改变量的值
- const , 声明的变量必须提供值,不能重新赋值,可修改引用类型的属性值
标识符
- 在js中所有的可以由我们自主命名的都是已称为是标识符,例如:变量名,函数名,属性名
- 命名规则
- 标识符可以含有字母,数字,_,$
- 标识符不能以数字开头
- 标识符不能是js中的关键字或保留字
- 标识符一般采用驼峰命名法
数据类型
- String 字符串
- Number 数值
- Boolean 布尔值
- null 空值
- Undefined 未定义
- Object 对象
- typeof
- 使用运算符 typeof 来检查变量的类型
- 使用typeof 检查一个null值,会返回object (将对象回收时就是将其赋值为 null )
- 使用typeof 检查一个undefined,会返回undefined
强制类型转换
- 转为 String
- 调用被转换数据类型的toString()方法
- num.toString()
- 调用 String()函数
- String(num)
- 隐式类型转换
- +’’
- 转为 Number
- 调用 Number()函数
- parseInt() 转为整数
- parseFloat() 转为浮点数
- 隐式类型转换
- -0 *1 /1
- 转为 Boolean
- 调用 Boolean()函数
- 数字–>布尔 除了0和NaN,其余的都是true
- 字符串–>布尔 除了""空,都是true
- 对象 --> 布尔 都是true
- null–>布尔 false
- undefined–>布尔 false
- 隐式类型转换
- !!
自增 & 自减
- a++
- 变量在前,先赋值再运算
- 在打印时,会先打印一次原值,后面再运算
- ++a
- 运算符在前,先运算后赋值
- 在打印时,直接运算
逻辑运算符
- ! & !!
- &&
- 全真真,有假假
- 短路的与
- 如果第一个值结果为 false,直接返回第一个值的结果
- 只要第一个值结果为 true,直接返回第二个值的结果
- ||
- 有真真,全假假
- 短路的或
- 只要第一个值结果为 true,直接返回第一个值的结果
- 如果第一个值结果为 false,直接返回第二个值的结果
数据的保存
- js中的变量都是保存到栈内存当中的
- 基本数据类型的值直接在栈内存中存储
- 值与值之间是独立存在的,修改一个变量不会影响其他的变量
- 对象是保存在堆内存当中的
- 每创建一个新对象,就会在堆内存中开辟出一个新的空间
- 而变量保存的是对象的内存地址(对象的引用)
- 如果两个变量保存的是同一个对象引用,当通过一个变量修改属性时,另一个也会受到影响
创建对象的方法
- 对象字面量
- 语法:
{属性名:属性值,属性名:属性值,}
var obj2={name:“猪八戒”,gender:“男”}
- var obj=new Object();
- var obj={};obj.name=“孙悟空”;
- 使用工厂方法创建对象
- 可以大批量地创建对象
function createPerson(name,age,gender){
// 创建一个新对象
var obj=new Object();
创建函数
- 构造函数
- var fun=new Function(‘console.log(“第一个函数”);’);
- 函数声明
- function fun2(){
- 函数表示式
- var fun3=function(){
枚举对象中的属性
- for…in语句
- for(var 变量 in 对象){
会将对象中一个属