JS面试(一):JS数据类型以及变量声明

一、js数据类型

  • JS属于动态语言,弱类型语言
    • 使用之前就确定其变量类型的是静态语言,在运行过程中需要检查数据类型的语言称为动态语言;支持隐式类型转换的语言称为 弱类型语言,反之为强类型语言

  • js一共有八种数据类型(Bigint为新增的),分为两类(原始值和引用值),原始值有:Undefined、Null、Boolean、Number、Bigint、String和Symbol。引用值则是指对象Object

  • 原始值类型的变量是保存在栈内存中的,它是按值来访问的的,我们操作的就是存储在变量中的实际值。如果在一个函数中声明一个原始值类型的变量,那么这个变量当函数执行结束之后会自动销毁。
  • 引用值类型的变量,它的变量名也就是它的引用,是保存在栈内存中,而它的值是保存在堆内存中。它是按引用来访问的,也就是我们操作的实际上是对该对象的引用

  • 确定数据类型的方法:typeof用来判断一个变量是否为原始值类型,更确切地说它是适合用来判断一个变量是否为字符串、数值、布尔值或者undefined,而对于null或者对象,它会返回object;instanceof可以用来判断引用值具体是什么类型的对象

二、变量声明、var、let和const

  • var声明的范围是函数作用域,而let和const都是块级作用域。同时需要说明的一点是在全局作用域中使用var声明的变量会成为window对象的属性,let和const声明的变量则不会,但是在作用域链的解析上是一样的

  • var声明的变量会提升,也即它声明的变量或被自动提升到函数或者全局作用于的顶部。严格情况下来说,let和const声明的变量也会被提升,但是由于“暂时性死区”(即在声明变量前的引用会出现referenceerror)的影响,实际上是不能在声明之前来使用let和const变量

  • var允许在同一个作用域中重复声明同一个变量,let和 const不允许

  • const的行为与let基本相同,唯一一个重要的区别是,使用 const声明的变量必须进行初始化,且不能被修改
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值