前端面试常问js数据类型

首先要知道基本数据类型复杂数据类型都有哪些

基本数据类型:Undefined、Null、String、Number、Boolean、Bigint、Symbol

  • Undefined

Undefined的含义是未赋值,如果声明一个变量,没有初始化值,这个变量就是未赋值(就是把undefined赋值了给了变量)

let a 
console.log(a) // undefined
  • null

null是一个独立的类型,null是一个空对象的指针,所以当我们采用typeof传入一个null的时候会返回一个object

  • String

字符串是被括在引号里面,常见的字符串有3种

let str1 = "字符串"
let str2 = '字符串'
let str3 = `字符串`

双引号都是简单的写法,在js语法里面没有区别,反引号是拓展功能,实现我们的变量模板字符串,举个🌰

let str1 = "字符串"
let strname = `上面的str1是一个${str1}`//str1可以随便二次赋值更改
  • Number

number这个类型代表了整数和浮点数
数字可以有很多操作,比如,乘法 *、除法 /、加法 +、减法 - 等等
数值转换

Number(true) = 1; Number(false) = 0; // 布尔值
Number(123) = 123 // 数值;
Number(null) = 0 // null;
Number(undefined) = NaN // undefined类型;
Number("123") = 123; Number("0123") = 123; Number("1.1") = 1.1; Number(" ") = 0; Number("Hello") = NaN; // 字符串
对象:调用 valueOf()方法,并按照上述规则转换返回的值。如果转换结果是 NaN,则调用 toString()方法,再按照转换字符串的规则转换。
  • Boolean

Boolean包含两个值 true和false,属于逻辑类型

注意:不同类型与布尔值之间存在隐式转换。非空字符串、非0、任意对象会被转换为 true。空(’’)、零(0、NaN)、空对象(null)、undefined会被转换为 false。

  • Bigint

当我们需要很大的数字的时候,精确到类似于时间戳那么大的数值,无法用number显示出来,将 n 附加到整数字段的末尾来创建 BigInt 值。

// 尾部的 "n" 表示这是一个 BigInt 类型
const bigInt = 4684567890123456789012345678901234567890n;
  • Symbol

Symbol是唯一、是不变的、用途是为了确保对象使用唯一的标识符,避免属性冲突。
用法:
Symbol() 函数初始化的时候,可以传入一个字符串对符号做描述

let strSymbol = Symbol('str')

因为是唯一的,所以这两个看起来相同,实则不同

const strSymbol1 = Symbol('str')
const strSymbol2 = Symbol('str')
console.log(strSymbol1 === strSymbol2)  // false
//使用for可以变得相同
const strSymbol1 = Symbol.for('str')
const strSymbol2 = Symbol.for('str')
console.log(strSymbol1 === strSymbol2)  // true

复杂数据类型:Object、Function、Array、Date、Map、Set、new RegExp

  • Object

对象是用来存放键值对和复杂的实体
使用{…}创建对象,里面的结构如下

const user = {
  name: 'wanzi', 
  age: 21
}
// 第一个的键是 "name",值是 "wanzi"。
// 第二个的键是 "age",值是 21
// [key]: value

name是key值(是一个字符串),我们通常叫属性名,后面是value(可以为任意类型的值)。
我们可以用两种语法创建一个空对象,通常我们会采用花括号的方法来进行创建。

const obj = new Object()//构造函数的语法
const obj = {} //字面量的语法

添加和删除一个键值对

//添加
user.beautiful = true
const user = {
  name: 'wanzi', 
  age: 21,
  beautiful: true
}
// 删除
delete user.beautiful
const user = {
  name: 'wanzi', 
  age: 21
}
//使用词语当做键名
delete user.beautiful
const user = {
  name: 'wanzi', 
  age: 21,
  'like you': true
}

!!!注意
const 定义的user能修改? 可以的

const user = {
  name: 'wanzi'
}
user.name = 'bigWanzi'
console.log(user.name) // bigWanzi

cons只对user进行了固定的值,并没有控制里面的内容,所以当我们去改变里面的内容的时候是没有问题的,但是user = 整体替换,就会出现问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值