运算符优先级
结合性左结合:相当于把左边的子表达式加上小括号右结合:相当于把右边的子表达式加上小括号
1233+10*2 // 23(3+10)*2 // 26 -> 左结合3+(10*2) // 23 这里的括号是多余的 -> 右结合
赋值运算符是右结合的,所以可以像下面这样写
1a = b = 5 // 相当于 a = ( b = 5 )
分组和短路在下表中,分组具有最高优先级,然而,这并不意味着总是优先对分组内的表达式进行求值,尤其是涉及短路时
常见短路例子如下:
代码示例
说明
a || (b * c)
首先对 a 求值,如果 a 为真值则直接返回 a
a && (b < c)
首先对 a 求值,如果 a 为虚值则直接返回 a
a ?? (b || c)
首先对 a 求值,如果 a 不是 null 或 undefined 则直接返回 a
a?.b.c
首先对 a 求值,如果 a 是 null 或 undefined 则直接返回 undefined
123 > 2 && 2 > 1 // true3 ...
电脑安装多版本nodejs
第一步 卸载电脑上已安装的 node卸载方法:开始 - 设置 - 应用,找到 node 点击卸载
第二步 安装 nvm点击 下载 nvm下载完成后,双击运行安装,安装完成后,打开命令行,运行 nvm 命令,如果显示如下,则表示安装成功
nvm 常用命令:
nvm arch:显示 node 运行在 32 位还是 64 位
nvm install <version> [arch]:安装 node,version 指定版本号或者 latest(最新稳定版);可选参数 arch 指定安装 32 位还是 64 位,默认是系统位数
nvm list [available]:显示已安装列表。可选参数 available,显示可安装的所有版本。list 可简化为 ls
nvm on:开启 node.js 版本管理
nvm.off:关闭 node.js 版本管理
nvm proxy [url]:设置下载代理。没有可选参数 url 的话,将显示当前代理。将 url 设置为 none 将移除代理
nvm node_mirror [url]:设置 node 镜像。如果不写 url,则使用默认 h ...
Object 原型方法
静态方法对象操作Object.create()语法: Object.create(proto, [propertiesObject])
作用: 创建一个新对象,且新对象的原型为 proto
参数:
proto:新创建对象的原型对象;如果 proto 参数不是 null 或非原始包装对象,则抛出 TypeError 异常
propertiesObject:可选参数。如果该参数不为 undefined,则该对象的自有可枚举属性将为新创建的对象添加指定的属性值和对象的属性描述符 -> 例子
返回值: 一个新对象,且该对象的原型指向 proto
原对象是否改变: 否。(因为这是生成对象的方法,并没有原对象)
Object.assign()语法: Object.assign(target, source)
作用: 用于将所有可枚举属性的值从一个或多个源对象分配到目标对象
参数:
target:目标对象
source:源对象
返回值: &ems ...
css - nth
:nth-child()语法:
123el:nth-child(num){ style}
元素 el 的父元素的第 num 个 且为 el 的子元素
例子:
123456789<div> <p>1</p> <div>2</div> <p>3</p></div>p:nth-child(2){ color: red;}
此样式是不会生效的,因为 p 的父元素的第二个子元素是 div,不是 p,不匹配,所以不生效
num 的可选值:
odd 奇数行
even 偶数行
具体数字,如1、2、3……
an+b n=0、1、2、3……
0n+3 表示匹配第三个
2n+0 表示2的倍数个,相当于 even
3n+4 匹配位置为4、7、10……
0n+1 同 :first-child
:first-child语法:
123el:first-child{ style}
元素 el 的所有兄弟元素中 第一个 且为 el 的元素
...
Sass 学习笔记
Sass 变量Sass 中,变量以 $ 开头,后跟变量名
12345678$main-fonts: Arial, sans-serif;$headings-color: green;<!-- 使用 -->h1{ font-family: $main_fonts; color: $headings-color;}
在 Sass 中,$main-fonts 和 $main_fonts 指向的是同一个变量
默认值 !default一般情况下,反复声明一个变量,以最后声明的那个变量的值为准。如果想实现一个功能:即 该变量在此处没有被声明的话,就用该变量的值;如果被声明过的话,就用声明过的值,此时可以用 !default
12345import 'sassFile'$fancybox-width: 400px !default;.fancybox { width: $fancybox-width;}
以上代码,如果导入的文件中声明了 $fancybox-width 变量,则使用导入文件中该变量的值,如果没有声明 ...
英雄迟暮
“我前后行意,於心未曾有所负也。假令死而有灵,子脩若问‘我母所在’,我将何辞以答!”
—— 曹操
“过河,过河,过河”
—— 宗泽
第七章 迭代器与生成器
迭代器模式迭代器模式描述了一个方案:可以把有些结构称为 “可迭代对象”(iterable),因为它们实现了正式的 Iterable 接口,而且可以通过迭代器 Iterator 消费
可迭代对象不一定是集合对象,也可以是具有类似数组行为的其他数据结构,如下的计算循环:
123for(let i=0;i<10;i++){ console.log(i)}
可迭代协议实现 Iterable 接口(可迭代协议)要求同时具备两种能力:
支持迭代的自我识别能力
创建实现 Iterator 接口的对象的能力在ECMAScript中,必须暴露一个属性作为 “默认迭代器”,而且这个属性必须使用特殊的 Symbol.iterator 作为键。这个默认迭代器属性必须引用一个迭代器工厂函数,调用这个工厂函数必须返回一个新迭代器
很多内置类都实现了 Iterable 接口
字符串
数组
映射
集合
arguments 对象
NodeList 等 DOM 集合类型
检查是否存在默认迭代器属性可以暴露这个工厂函数:
1234567891011let num = 1;let obj ...
第八章 对象、类与面向对象编程
理解对象
ECMA-262 将对象定义为一组属性的无序集合。对象的每个属性或方法都由一个名称来标识,这个名称映射到一个值
属性的类型ECMA-262 使用一些内部特性来描述属性的特征,开发者不能在 JavaScript 中直接访问这些特性。为了将某个特性标识为内部特性,规范会用两个中括号把特性的名称括起来,比如 [[Enumerable]]
属性分两种:数据属性和访问器属性1、数据属性数据属性包含一个保存数据值的位置。值从这个位置读取,也会写入到这个位置。数据属性有4个特性描述它们的行为:
[[Configurable]]:表示属性是否可以通过 delete 删除并重新定义,是否可以修改它的特性,以及是否可以把它改为访问器属性。默认值为false。默认情况下,所有直接定义在对象上的属性的这个特性都是 true
[[Enumerable]]:表示属性是否可以通过 for-in 循环返回。默认值为false。默认情况下,所有直接定义在对象上的属性的这个特性都是 true
[[Writable]]:表示属性的值是否可以修改。默认值为false。默认情况下,所有直接定义在对象上的属性的这个 ...
第六章 集合引用类型
Array创建数组
使用 Array 构造函数
数组字面量
ES6 在 Array 构造函数上新增了两个用于创建数组的静态方法:from() 和 of()
from() 用于将类数组解构转换为数组实例参数:第一个参数是一个类数组对象,即任何可迭代的结构,或者有一个 length 属性和可索引元素的结构;第二个参数为可选,是一个函数,新数组中的每个元素都会执行该回调函数;第三个参数为可选,指定执行回调函数时的 this(箭头函数不适用)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748// 字符串会被拆分成单字符数组Array.from('Matt') // ['M','a','t','t']// 可以将集合和映射转换为一个新数组const a = new Map().set(1,2).set(3,4)const b = new Set().add(1).add( ...
第五章 基本引用类型
DateDate.now() 返回表示方法执行时日期和时间的毫秒数
1Date.now() === new Date().getTime() // -> true
Date.toLocaleString()参数:
locales String or Array
options Object
options 属性及说明
属性
说明
可选值
weekday
星期
‘narrow’:最短 S;’short’:缩写 Sun;’long’:长 Sunday
era
纪元
‘narrow’:最短 A;’short’:缩写 AD;’long’:长 Anno Domini(公元,西元)
year
年
‘2-digit’: 21年;’numeric’:2021年
month
月
‘2-digit’: 09月;’numeric’:9月
day
日
‘2-digit’: 09日;’numeric’:9日
hour
小时
‘2-digit’: 下午03时;’numeric’:下午3时
hour12
小时
默认值:true,即使用12小时制。false为使用24 ...