Christopher

Results 7 comments of Christopher

根据以上的讨论,我也补充下。 如下创造了**2个Block**,分别对应变量**e和f**;**1个Script**(也可以理解为顶级Block),对应变量**a和b**,剩下的**c和d**作为**全局变量**。 ![const和let的作用域](https://img-blog.csdnimg.cn/20190714183656661.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Vhc29uTXU=,size_16,color_FFFFFF,t_70)

**利用Proxy实现一个简化版的MVVM** 参照vue的响应式设计模式,将数据劫持部分的```Obejct.defineProperty```替换为```Proxy```即可,其他部分,如compile(编译器没有实现,用写好的html模拟已完成编译),watcher,dep,事件监听等基本保持不变,简单实现代码如下: ```html ``` ```js // js部分 class Watcher{ constructor(cb){ this.cb = cb; } update(){ this.cb() } } class Dep{ constructor(){ this.subs = []; } publish(){ this.subs.forEach((item)=>{ item.update && item.update();...

> 为什么console的时候不会自动调用 toString方法呢,上面的答案在我的chrome控制台里返回的都是函数 我也遇到了类似的问题,toString的方案在新版的Chrome(我的版本是98)似乎不起作用,打印出来的是一个函数,需要显式调用才能返回结果

关键点 1. 排序 2. 去重 3. 分组 ```js const makeArrayRange = (data)=>{ return data.sort((a,b)=>{return a-b}).reduce((acc, cVal, index)=>{ let loc = Math.floor(cVal/10); !acc[loc]&&(acc[loc] = []); acc[loc].indexOf(cVal) === -1 && acc[loc].push(cVal); return...

基本和上面的例子差不多,不同点是每个传入值使用Promise.resolve转为Promise对象,兼容非Promise对象 ```js const _race = (p)=>{ return new Promise((resolve, reject)=>{ p.forEach((item)=>{ Promise.resolve(item).then(resolve, reject) }) }) } ```

大概率是edge的锅: https://github.com/tauri-apps/tauri/discussions/9831 https://news.ycombinator.com/item?id=40419161