乐趣区

关于javascript:JavaScript规定了几种语言类型

为感激大家的反对,特发福利红包(支 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) // true
console.log(b instanceof String) // false
console.log(typeof(b) === String) // false
console.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) 形式曾经定义过得变量
  • 在函数外部不定义间接进行赋值的变量(隐式申明), 作用域属于全局, 当函数执行之后在内部能够拜访失去
  • 函数申明不论是在文档的何处地位都将被晋升到顶部,并且函数定义也被晋升
退出移动版