红宝书阅读笔记 第三章

我觉得第三章,内容并不多(因为大多很基础,很多操作都是特
殊情况,一般遇不到,也没必要记忆)

3.4数据类型

undefiened null boolean number string symbol

let message = 'some string';
console.log(typeof message)//"string"
console.log(typeof 99)//"number"

undefined

声明单位初始化,一般就是undefined

let message;//undefined

Null

Null 类型只有一个值,即特殊值null,表示一个空对象指针
let car = null;
console.log(car) //'object'
在定义将来要保存对象值的变量时,建议用null来初始化,
这样可以知道他未来是否作为对象
if(car != null) {
    //car是一个对象的引用
}

Boolean

Number

Number.MAX_VALUE //可以表示的最大值
NaN不是数值
isNaN()
console.log(isNaN(NaN))//true

String类型

模板字面量标签函数

模板字面量的一种使用吧,算是
let a = 6;
let b = 9;
function simpleTag(strings, av, bv,sum) {
    console.log(strings)
    console.log(av)
    console.log(bv)
    console.log(sum)
    return 'hahaha'
}
let untagg = `${a} + ${b} = ${a+b}`
let taggedRes = simpleTag`${a} + ${b} = ${a+b}`
console.log(untagg)
console.log(taggedRes)
输出:
[ '', ' + ', ' = ', '' ]
6
9
15
6 + 9 = 15
hahaha

个人感觉用的未必多,具体再去读43页,或者mdn(用到的时候)

原始字符串

直接获取原始的模板字面量内容

console.log(String.raw`\u00A9`)
console.log(String.raw`a
b`)
输出
\u00A9
a
b

符号

符号用来创建唯一记号,进而用作非字符串形式的对象属性

let sym = Symbol()//不能new
console.log(typeof sym)//'object'
可以传入一个字符串参数描述符号,但是与其定义或标识无关
let a = Symbol('foo')
let b = Symbol('foo')
console.log(a==b) //false

使用全局符号注册表

let a = Symbol.for('foo')
//在全局符号注册表中创建并重用符号,如果不存在对应符号,
//生成一个新符号添加到注册表;
//如果已经存在则返回已有的

let a = Symbol.for()//undefined
//必须以字符串为键

let a = Symbol.for('foo')
let b = Symbol('foo')
console.log(a==b)//false
//全局注册表中定义的与Symbol定义的并不相同
let a = Symbol.for('foo')
console.log(Symbol.keyFor(a))//foo
//必须是全局注册表中定义的,否则不对

作为对象的属性

let s1 = Symbol('foo')
let o = {
    [s1]: 'foo val'
}
//o[s1]='abc'
//Object.defineProperty(o,s1,{value:'aaa'})

获取属性
Object.getOwnPropertySymbols(o)//用来获取符号属性,返回数组
Object.getOwnPropertyNames(o)//用来获取常规属性数组
Object.getOwnPropertyDescriptors(o)//包含两种类型属性的对象
Reflect.ownKeys(o)//l两种类型的键

常用内置符号

不可写、不可枚举、不可配置,就是全局函数Symbol的普通字符串属性,指向一个符号的实例
跳过了,书上已经折页,太过抽象,而且涉及不会的,后面回来做
感觉目前也未必重要

操作符

按位非~
let num = 25;
let num2 = ~num;
console.log(num2)

按位与 &

按位或 |
按位异或 ^
左移
let oldValue = 2;
let newVal = oldValue << 5;
左移五位,右面补0

有符号右移
>>
let olV = 64;
let newVal = olV >> 5
符号值填补左侧空值

无符号右移
>>>
let Olv = 64;
let newVa = 64 >>> 5;
//左面补0
其他
指数操作符 **
3**2  //9

语句

for-in:
一种严格的迭代语句,用于枚举对象中的非符号键属性
for(property in expression) {

}

for(const propName in window){
    document.write(propName)
}
//propName 应该循环window对象的属性值,
//webStorm报错



for-of:
一种严格的迭代语句,遍历可迭代对象的元素
for(propery of expression) statement;
for(const  el of [2,4,6,8]) {
    console.log(el)
}
//如果尝试迭代的变量不支持迭代,则for-of报错

标签语句和with语句感觉不常用,不进行复习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值