js-数据类型-作用域-作用域链-变量 审核中

变量

变量声明的几种方式

var let const

成都网站建设哪家好,找创新互联公司!专注于网页设计、网站建设公司、微信开发、小程序制作、集团成都企业网站定制等服务项目。核心团队均拥有互联网行业多年经验,服务众多知名企业客户;涵盖的客户类型包括:成都房屋鉴定等众多领域,积累了大量丰富的经验,同时也获得了客户的一致称扬!

相同之处

  1. var let const 都可以用来声明一个变量

  2. 都拥有函数作用域与全局作用域

不同之处

  1. var声明的变量有变量提升
    letconst声明的变量不会存在这个问题

  2. var没有块级作用域, letconst 声明的变量具有块级作用域

块级作用域:

if(true){
let name = 'let声明的变量';
const enums = 'const声明的变量'
}
  1. var 声明的变量是可以被重复定义的,let声明的变量在同一个作用域中是 不可以重复声明, 但是可以重复修改,const声明的是一个常量,在规范上是不可以被重复定义重复修改的,但是当其变量的值为引用数据类型时,她所指向到堆
    中的值是可以被重复修改的,如果要对一个值进行修改,建议使用let声明变量。

作用域

js中作用域分为: 全局作用域 函数作用域 块级作用域

作用域链

寻找当前变量一直从当前作用域寻找至全局作用域形成的链被称为作用域链

数据类型

基础数据类型[值全部存储在栈中]

  • Number --- 数值
  • String --- 字符串
  • Boolean --- 布尔值
  • Symbol --- 唯一值
  • BigInt ---超出安全数值的值
  • Undefined --- 未定义的值
  • Null --- 未初始化的值

引用数据类型[引用数据类型存在堆中,键值存在栈中]

  • Object --- 对象
  • Array --- 数组

类型判断

基本数据类型

  1. 基本数据类型可以通过typeof 来进行判断是哪种基本数据类型
const str = '字符串' //string
const num = 123 //Number
const Boolean = true //Boolean
const nul = null //Object
const a = undefined //undefined
const bigInt = BigInt(123n) //BigInt
const sybmol = Symbol('asd') //Symbol
  1. Object.prototype.toString.call(xxx).slice(8,-1) //返回检测到的数据类型
  2. str.proto === String.prototype

引用数据类型

引用数据类型可以判断原型是否相等

手写类型判断

function getType(type) {
if (typeof type === 'object') return Object.prototype.toString.call(type).slice(8, -1)
return typeof type
}

本文名称:js-数据类型-作用域-作用域链-变量 审核中
分享网址:http://myzitong.com/article/dsojjcc.html