当前位置: 代码迷 >> 综合 >> 新版红宝书第三章语言基础(学习笔记)
  详细解决方案

新版红宝书第三章语言基础(学习笔记)

热度:97   发布时间:2024-03-10 02:01:26.0

3.1 语法

1、ECMAScript 中一切都区分大小写(html不区分大小写)
2、标识符命名规则
//第一个字符必须是一个字母、下划线(_)或美元符号($);
//驼峰大小写。第一个单词的首字母小写,后面每个单词
的首字母大写,如myCar
3、严格模式(“use strict”)

3.3变量

1、var,let,const
//let是块作用域, var是函数作用域。
//在 let 声明之前的执行瞬间被称为“暂时性死区”
// 使用 let 在全局作用域中声明的变量不会成为 window 对象的属性
2、声明风格及最佳实践
//不使用 var(let、const变量有明确的作用域、声明位置)
//const 优先,let 次之(const 声明可以让浏览器运行时强制保持变量不变,也可以让静态代码分析工具提前发现不合法的赋值操作)

3.4 数据类型

//6 种简单数据类型(也称为原始类型):Undefined、Null、Boolean、Number、String 和 Symbol。
//一种复杂数据类型叫 Object
//特殊值 null 被认为是一个对空对象的引用(空对象指针),undefined属于声明了未初始化值
//Number类型声明(num = 070 // 八进制的 56 、0xA 十六进制 10)

3.5 模板字符串

内部可以放置变量也可以换行
a = 10
`${a}` == ‘10’

3.6 Symbol 类型

确保对象属性使用唯一标识符,不会发生属性冲突的危险。
没有字面量语法,Symbol()函数不能与 new 关键字一起作为构造函数使用。
Symbol.for(‘foo’) ( 全局符号注册,创建新符号或者重用已有符号 )
Symbol.keyFor() 查询全局符号
let s2 = Symbol(‘bar’);
console.log(Symbol.keyFor(s2)); // undefined
//一些遍历对象内部属性的方法
let s1 = Symbol(‘foo’),
s2 = Symbol(‘bar’);
let o = {
[s1]: ‘foo val’,
[s2]: ‘bar val’,
baz: ‘baz val’,
qux: ‘qux val’
};
Object.getOwnPropertySymbols(o)
// [Symbol(foo), Symbol(bar)]
Object.getOwnPropertyNames(o)
// [“baz”, “qux”]
Object.getOwnPropertyDescriptors(o)
// {baz: {…}, qux: {…}, Symbol(foo): {…}, Symbol(bar): {…}}
Reflect.ownKeys(o)
// [“baz”, “qux”, Symbol(foo), Symbol(bar)]

3.7 位操作符

左移(1 << 2 === 4)

  相关解决方案