<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[L1nCyKkk的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/L1nCyKkk</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; L1nCyKkk]]></copyright><item><title><![CDATA[Web前端高级编程学习笔记16：Promise]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118150079</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118150079</guid><author>L1nCyKkk</author><pubDate>Wed, 23 Jun 2021 12:14:40 +0800</pubDate><description><![CDATA[Promise
Promise 是异步编程的一种解决方案，比传统的解决方案——回调函数和事件——更合理和更强大。

语法上，Promise 是一个对象，从它可以获取异步操作的消息

特点
Promise对象不受外接影响。
一旦状态改变，就不会再变，任何时候都可以得到这个结果。

Promise的缺点：
无法取消Promise，一旦新建它就会立即执行，无法中途取消。
如果不设置回调函数，Promise内部拋出的错误，不会反应到外部。
当处于pending状态时，无法得知目前进展到哪一个阶段(刚刚开始还是即将完]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记15：异步编程]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118150067</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118150067</guid><author>L1nCyKkk</author><pubDate>Wed, 23 Jun 2021 12:12:31 +0800</pubDate><description><![CDATA[单线程
JavaScript是单线程的。所有任务需要排队

同一时间只能做一件事。
作为浏览器脚本语言，主要是与用户互动和操作DOM。
为了避免复杂性和DOM渲染冲突。

任务队列
所有任务分为：同步任务和异步任务

异步任务执行原理：
所有同步任务都在主线程上执行，形成一个执行栈。
主线程之外，还存在一个“任务队列”。只要异步任务有了执行结果，就在“任务队列”之中放置一个事件。
一旦“执行栈”中所有同步任务执行完毕，系统就会读取“任务队列”中还有哪些事件。开始执行

事件与回调函数
“任务队列”是一个事件]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记14：迭代器与生成器]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118150002</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118150002</guid><author>L1nCyKkk</author><pubDate>Wed, 23 Jun 2021 12:10:50 +0800</pubDate><description><![CDATA[Iterator 的作用
为各种数据结构，提供一个统一的、简便的访问接口。使得数据结构的成员能够按照某种次序排列。
任何数据结构只要部署Iterator接口，就可以完成遍历操作。
Iterator 接口
Symbol.iterator属性
ES6 规定，默认的Iterator接口部署在数据结构的Symbol.iterator属性。

或者说，一个数据结构只要具有Symbol.iterator属性，就可以认为是“可遍历的 (iterable)。

原生具备Iterator 接口的数据结构：Array，Map，]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记13：Set与Map]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118149838</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118149838</guid><author>L1nCyKkk</author><pubDate>Wed, 23 Jun 2021 12:08:01 +0800</pubDate><description><![CDATA[Set
集合
类似于数组，但其成员的值都是唯一的、不重复。
创建方法
Set本身是一个构造函数。
const s=new Set();
[2,3,4,5,2,2].forEach(x=&gt;s.add(x));
for(let i of s){
    console.log(i);
}
//[ 2,3,4,5]


add( )方法可以添加元素到Set实例中，但不会添加重复的值。

初始化
Set函数可以接受一个数组（或具有Iterable接口的其他数据结构）来初始化Set实例。
let set=new]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记12：Symbol]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118149769</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118149769</guid><author>L1nCyKkk</author><pubDate>Wed, 23 Jun 2021 12:02:05 +0800</pubDate><description><![CDATA[Symbol
ES6引入新原始数据类型 Symbol ，表示独一无二的值。
Symbol值通过Symbol( )函数生成。
let s=Symbol();
s;
//Symbol()
typeof s;
//"symbol"

Symbol函数可以接受一个字符串作为参数，表示对Symbol实例的表述。
let s1=Symbol("foo")
s1
//Symbol(foo)
s1.toString();
//"Symbol(foo)"

如果Symbol的参数是一个对象，就会调用其tostring方法，将]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记11：面向对象编程]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118149590</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118149590</guid><author>L1nCyKkk</author><pubDate>Wed, 23 Jun 2021 11:59:34 +0800</pubDate><description><![CDATA[字面量创建
对象工厂
利用对象工厂函数创建并返回一个新对象。
function createMouse(name, age, gender) {
    return {
        name ,
        age,
        gender,
    };
}
let mickey = createMouse ("Mickey", 18,"Male") ;
console. log (mickey) ;
let jerry = createMouse("Jerry", 10, "Male")]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记10：函数进阶（2）]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118149349</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/118149349</guid><author>L1nCyKkk</author><pubDate>Wed, 23 Jun 2021 11:54:48 +0800</pubDate><description><![CDATA[函数闭包
JS采用词法作用域。

函数的执行依赖于变量作用域，这个作用域是在函数定义时决定的，而不是函数调用时决定的。 为了实现这种词法作用域,
JavaScript函数对象的内部状态不仅包含函数的代码逻辑，还必须引用当前的作用域链。

函数对象可以通过作用域链相互关联起来，函数体内部的变量都可以保存在函数作用域内，这种特性在计算机科学文献中称为“闭包( closure ) ”。

从技术的角度讲，所有的JavaScript函数都是闭包:它们都是对象，它们都关联到作用域链。

嵌套函数
var scope=]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记9：函数进阶]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115909447</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115909447</guid><author>L1nCyKkk</author><pubDate>Tue, 20 Apr 2021 15:40:56 +0800</pubDate><description><![CDATA[目录基本概念函数定义函数定义方式函数声明语法函数表达式箭头函数（ES6）Function 构造函数函数命名函数参数arguments对象参数默认值扩展参数剩余参数常见问题函数调用作为函数调用作为方法调用构造函数调用间接调用回调函数函数对象函数属性length属性prototype属性自定义属性函数方法
基本概念
函数，一段JS代码，它只定义一次，但可以被执行或调用任意次。

JS函数是参数化的。


函数的定义会包括一个名为形参的标识符列表，这些参数在函数体内像局部变量一样工作。
函数调用会为形参提供实参的]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记8：数组进阶]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115909097</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115909097</guid><author>L1nCyKkk</author><pubDate>Tue, 20 Apr 2021 15:27:20 +0800</pubDate><description><![CDATA[目录基本概念操作数组创建数组读写数组元素稀疏数组数组长度数组元素的添加和删除数组遍历数组方法join ( )reverse ( )sort ( )concat ( )slice ( )splice ( )push ( ) 和 pop ( )unshift ( ) 和 shift ( )ES5新增方法ES6新增方法构造函数方法
基本概念
数值是值的有序集合。

每个值叫做一个元素，每个元素有数字对应其位置叫做索引。

数组是无类型的。

数组元素可以是任意类型。

数组是动态的。

根据需要，数组可以增长或缩]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记7：对象进阶]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115898028</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115898028</guid><author>L1nCyKkk</author><pubDate>Tue, 20 Apr 2021 15:20:03 +0800</pubDate><description><![CDATA[JavaScript对象的特征
JavaScript的基本数据类型，一种复合值，可看做是属性的无序集合。

每个属性都是一个名/值对。
属性名是字符串，因此可以把对象看成是从字符串到值的映射。

对象除了可以保持自有的属性，还可以从一个称为原型的对象继承属性。

原型式继承（ prototypal inheritance )是JavaScript的核心特征。


对象是动态的，可以增加或删除属性。

除了字符串、数值、true 、 false 、null和 undefined ，其他值都是对象。

对象最常]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记6：正则表达式]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115897268</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115897268</guid><author>L1nCyKkk</author><pubDate>Tue, 20 Apr 2021 11:05:42 +0800</pubDate><description><![CDATA[目录正则表达式的基础概述创建方法字面量构造函数修饰符字符类字符类取反范围类预定义类边界量词分组反向引用忽略分组前瞻ES6中的正则表达式RegExp对象属性对象方法
正则表达式的基础
概述
JavaScript中使用 RegExp 对象来封装一个正则表达式，并提供相关的方法和属性。
创建方法
正则表达式的两种创建方法
字面量
let reg=/\bis\b/g;            //g表示全文匹配
let str='He is a boy.This is a dog. Where is she?'
co]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记5：字符串扩展]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115894870</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115894870</guid><author>L1nCyKkk</author><pubDate>Tue, 20 Apr 2021 10:50:07 +0800</pubDate><description><![CDATA[目录ES6字符串新增方法模板字符串
ES6字符串新增方法
includes()：返回布尔值，表示是否找到了参数字符串。
startsWith()：返回布尔值，表示参数字符串是否在原字符串的头部。
endsWith()：返回布尔值，表示参数字符串是否在原字符串的尾部。
let s = ‘Hello world!’;
s.includes(‘o’) // true
s.startsWith(‘Hello’) // true
s.endsWith(’!’) // true
repeat方法返回一个新字符串，表示将]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记4：基本引用类型]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115865712</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115865712</guid><author>L1nCyKkk</author><pubDate>Mon, 19 Apr 2021 15:40:27 +0800</pubDate><description><![CDATA[目录基本引用类型数值JavaScript数值的特征算术运算运算符溢出( overflow )下溢( underflow )被零整除数值转换Number常用方法toFixed(n)toExponential(n)toPrecision(n)Number.isFinite( )Number.isNaN( )Number.isInteger( )Number.EPSILONMath对象常用方法舍入方法Math.random( )布尔值转换方法字符串和String字符串转义字符字符串操作StringcharAt()]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记3：原始值与引用值]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115865492</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115865492</guid><author>L1nCyKkk</author><pubDate>Mon, 19 Apr 2021 15:20:31 +0800</pubDate><description><![CDATA[目录原始值原始值动态属性原始值包装类型引用值值传递

ES数据分为 原始值与引用值。

原始值
原始值：表示单一的数据。(undefined、null、boolean、number、string、symbol)
原始值动态属性

原始值不可改变。
原始值不能有属性。

let one="Tom";
one.age=20;
console.log(one,one.age)         //"Tom",undefined

原始值包装类型
为了方便操作原始值，ES提供了3种特殊的引用类型: Boolean、]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记2：解构赋值]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115863770</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115863770</guid><author>L1nCyKkk</author><pubDate>Mon, 19 Apr 2021 15:09:04 +0800</pubDate><description><![CDATA[解构赋值
解构赋值：按照一定模式从数组或者对象中提取值，并给变量赋值
string 类型既可以数组解构又可以对象解构。

扩展/展开运算符 ：  …

默认值
解构赋值中允许给左边变量设置默认值，以免右边不能匹配时不至于为undefined。
let [foo = true] = [ ];
let [x,y = 'b'] = [ 'a' ];
let [m, n = 'b' ] = [ 'a' ,undefined];


对象解构赋值
对象进行解构赋值与数组不一样，它没有索引所以只能用键值来一一对应匹配。]]></description><category></category></item><item><title><![CDATA[Web前端高级编程学习笔记1：let、作用域、const]]></title><link>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115863360</link><guid>https://blog.youkuaiyun.com/L1nCyKkk/article/details/115863360</guid><author>L1nCyKkk</author><pubDate>Mon, 19 Apr 2021 14:17:19 +0800</pubDate><description><![CDATA[let
1.let：类似于var，但所声明的变量只在let命令所在的代码块有效。
for循环很适合let命令。
for(var i=0;i&lt;10;i++){
    console.log(i);             
}
console.log(i);             //输出10

for(let i=0;i&lt;10;i++){
    console.log(i);             
}
console.log(i);             //报错，i未定义

for]]></description><category></category></item></channel></rss>