JavaScript规定了几种语言类型

JavaScript规定了几种语言类型

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)方式已经定义过得变量
  • 在函数内部不定义直接进行赋值的变量(隐式声明),作用域属于全局,当函数执行之后在外部可以访问得到

  • 函数声明不管是在文档的何处位置都将被提升到顶部,并且函数定义也被提升

公众号回复 1 可获取电子书 alt

本文由 mdnice 多平台发布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值