《JavaScript 高级程序设计(第四版)》—— 语言基础

本文深入探讨了JavaScript中的标识符规则、变量作用域、数据类型转换以及对象特性。重点介绍了var、let和const的差异,Number类型的特点,String的方法,以及Symbol作为唯一标识符的应用。此外,还提到了Object的属性和方法,以及for-in和for-of的遍历区别。
摘要由CSDN通过智能技术生成

标识符

变量、函数、属性或函数参数的名称

  • 第一个字符必须是字母,下划线(_)或美元符号($)
  • 剩下的其他字符可以是字母、下划线、美元符号或数字

var、let 和 const

var 变量的作用域包括函数和全局,let 还有块级作用域;
在函数内定义变量省略操作符会创建一个全局变量;

var 声明变量存在声明提升,let 在声明之前存在“暂时性死区”,任何引用 let 声明的变量都会抛出错误;

在浏览器中 var 声明的变量会成为 window 对象的属性,let 不会;

var 允许重复声明,let 不允许;

const 和 let 基本一致,唯二的区别是 const 声明变量必须同时初始化,尝试修改 const 声明的变量会报错;

数据类型

简单数据类型:Undefined、Null、Boolean、Number、String、Symbol
复杂数据类型:Object

typeof 可以确定简单数据类型,还能区别 object 和 function

Undefined

目的是为了正式明确空对象指针(null)和未初始化变量的区别
判断一个变量是否存在可以用 typeof xxx

Number

类型转换规则
parseInt
Number 类型使用 IEEE 754 格式(双精度)表示整数和浮点数。
八进制:0o,十六进制:0x
Number.MIN_VALUE=5e-324,NUMBER.MAX_VALUE=1.8e308
0 和 0 相除会返回 NaN,只有分母有 0 会返回 Infinity

String

toString() 方法
原始字符串 String.raw

Symbol

确保对象属性使用唯一标识符
Symbol.for() 在全局符号注册表中创建
Symbol.keyFor() 查询全局注册表
Object.getOwnPropertyNames() 返回对象实例的常规属性数组
Object.getOwnPeopertySymbols() 返回对象实例的符号属性数组
Object.getOwnPropertyDescriptors() 同时包含常规和符号属性描述符的对象

Symbol.hasInstance —— instanceof 操作符
Symbol.isConcatSpreadable —— Array.prototype.concat()
Symbol.iterator —— for-of

Object

对象:一组数据和功能的集合。每个 Object 实例都有如下属性和方法

  • constructor:创建当前对象的函数
  • hasOwnProperty:判断当前实例是否存在给定的属性
  • isPrototypeOf:当前对象是否是另一个对象的原型
  • propertyIsEnumerable:给定的属性是否可以使用 for-in 枚举
  • toString()
  • valueOf()

for-in 和 for-of

for...in 语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性。配合 hasOwnProperty() 能够保证只迭代自身属性。

for...of 遍历可迭代对象的元素,调用对象 next() 方法顺序迭代元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值