ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-08-18 21:35:26  阅读:112  来源: 互联网

标签:const 变量 作用域 数据类型 js --- let


变量

变量声明的几种方式

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
}

标签:const,变量,作用域,数据类型,js,---,let
来源: https://www.cnblogs.com/pitepan/p/16600170.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有