变量
变量声明的几种方式
var
let
const
相同之处
-
var
let
const
都可以用来声明一个变量 -
都拥有函数作用域与全局作用域
不同之处
-
var
声明的变量有变量提升
而let
和const
声明的变量不会存在这个问题 -
var
没有块级作用域,let
、const
声明的变量具有块级作用域
块级作用域:
if(true){
let name = 'let声明的变量';
const enums = 'const声明的变量'
}
var
声明的变量是可以被重复定义的,let
声明的变量在同一个作用域中是 不可以重复声明, 但是可以重复修改,const声明的是一个常量,在规范上是不可以被重复定义重复修改的,但是当其变量的值为引用数据类型时,她所指向到堆
中的值是可以被重复修改的,如果要对一个值进行修改,建议使用let声明变量。
作用域
js中作用域分为: 全局作用域
函数作用域
块级作用域
作用域链
寻找当前变量一直从当前作用域寻找至全局作用域形成的链被称为作用域链
数据类型
基础数据类型[值全部存储在栈中]
- Number — 数值
- String — 字符串
- Boolean — 布尔值
- Symbol — 唯一值
- BigInt —超出安全数值的值
- Undefined — 未定义的值
- Null — 未初始化的值
引用数据类型[引用数据类型存在堆中,键值存在栈中]
- Object — 对象
- Array — 数组
类型判断
基本数据类型
- 基本数据类型可以通过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
- Object.prototype.toString.call(xxx).slice(8,-1) //返回检测到的数据类型
- str.proto === String.prototype
引用数据类型
引用数据类型可以判断原型是否相等
手写类型判断
function getType(type) {
if (typeof type === 'object') return Object.prototype.toString.call(type).slice(8, -1)
return typeof type
}
声明:本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。