为感激大家的反对,特发福利红包(支F宝口令红包),点击返回支付:Gitee
String、Number、Boolean、Null、Undefined、Object、Symbol(ES6)、BigInt(ES10)
根本类型
- 拜访:按值拜访
- 存储:栈内存(Stack)
援用类型
- 拜访:按援用拜访
- 存储:堆内存(Heap)
- typeof:用来检测一个变量是不是根本的数据类型
- instanceof: 用来判断某个构造函数的 prototype 属性所指向的对象是否存在于另外一个要检测对象的原型链上。简略说就是判断一个援用类型的变量具体是不是某种类型的对象
function a() { console.log(1)}let b = '1'console.log( a instanceof Function) // trueconsole.log( b instanceof String) // falseconsole.log( typeof(b) === String) // falseconsole.log( typeof(b) === 'string') // true
变量申明
- 申明变量的形式有三种:var、let、const(es6新增let和const关键词来申明变量)
var
- var能够进行变量晋升(预解析),只晋升变量申明,不晋升变量赋值
- var能够进行变量的反复定义(后定义的值会笼罩原先定义的值)
- var定义的变量,只有在function当中定义内部无法访问,其余比方在for,if,while外部定义的都能够在内部进行拜访
- var定义的变量的作用域是window,能够用"window.变量名"来进行调用(个别都会省略简写)
let
- let不能进行变量的晋升,不能进行变量的反复定义,也不能定义其余(var,const)形式曾经定义过得变量
- let定义变量会有长期死区(在let变量未定义之前的区域都称作长期死区,即在这些区域当中不可能拜访到let所申明的变量)
- let定义的变量会造成一个块级作用域,在for,if,while外部定义变量在内部无奈进行拜访.相似函数外部的变量,这也是造成闭包的一种形式
- let定义的变量作用域属于global,所以不能用"window.变量名"来调用;而global不会裸露在全局当中,所以也无奈通过"global.变量名"来调用
const
- const个别是用来定义常量(1,2,a,b…),一旦定义,不能批改
- const申明变量必须赋值,否则间接报错
- 开发中,咱们约定俗成的将const定义的变量名全副大写
- const 如果定义的是对象、数组、函数、援用数据类型。能够扭转其中的存储的数据
- const定义的变量作用域也属于global,也会有长期死区,也会造成块级作用域使内部无法访问
- const不能进行变量的晋升,不能进行变量的反复定义,也不能定义其余(var,let)形式曾经定义过得变量
- 在函数外部不定义间接进行赋值的变量(隐式申明),作用域属于全局,当函数执行之后在内部能够拜访失去
- 函数申明不论是在文档的何处地位都将被晋升到顶部,并且函数定义也被晋升