随笔分类 - 深入学习JavaScript
摘要:前言 来源:https://dailc.github.io/2018/01/21/js_singlethread_eventloop.html 见解有限,如有描述不当之处,请帮忙及时指出,如有错误,会及时修正。 ———-超长文+多图预警,需要花费不少时间。———- 如果看完本文后,还对进程线程傻傻分
阅读全文
摘要:在很多时候经常看到Array.prototype.slice.call()方法,比如Array.prototype.slice.call(arguments),下面讲一下其原理: 1、基本讲解 1.在js里Array是一个类 slice是此类里的一个方法 ,那么使用此方法应该Array.protot
阅读全文
摘要:直接看题目,先不要急着看答案 先自己思考,收获更多 一 二 三 四 五 六 七 var a={}, b={key:'b'}, c={key:'c'}; a[b]=123; a[c]=456; console.log(a[b]);//456 原因:当使用一个引用类型·当做某个对象的属性来赋值,都会隐式
阅读全文
摘要:原理如下: 假设要从数值A变化到数值B,如果是线性运动,则每次移动距离是一样;如果是缓动,每次移动距离不一样。那如何才能不一样呢?很简单,按比例移动就可以。 例如:每次移动剩余距离的一半。 对吧,超容易理解的。 比方说:你和初恋之间距离是64,每秒移动一半,则,你们之间的距离下一秒就是32, 再下一
阅读全文
摘要:首先我们需要一个html结构 <div > <ul> <li>a</li> <li>a</li> <li>a</li> <li>a</li> <li>a</li> </ul> </div> 我们遍历ul 下所有的li 并添加点击事件,一般我们会在for循环里面添加点击事件,但是结果和我们所期盼不一样
阅读全文
摘要:函数声明和变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部 请注意,变量赋值并没有被提升,只是声明被提升了。 函数的声明比变量的声明具有高的优先级。 下面的程序是什么结果? var foo = 1; function bar() { if (!foo) { var foo = 10; } al
阅读全文
摘要:以下代码是否报错,如果不报错输出什么,为什么 var x = !!"Hello" + (!"world", !!"from here!!"); alert(x);不会报错,输出为2;原因:var x = !!"Hello" + (!"world", !!"from here!!");因为这三个字符串
阅读全文
摘要:var a = {n:1}; var b = a; a = {n:2}; a.x = a ;console.log(a.x);console.log(b.x); var a = {n:1}; var b = a; a.x = a = {n:2}; console.log(a.x);console.l
阅读全文
摘要:上次分享了一道题,大家反响不错,很开心自己写的东西有人愿意花时间去看,也给了自己莫大的鼓舞,其实做题虽然不比真正的编程,但是也能够让你发现一些你之前没有注意到的语言层面的问题。所以,这次再分享一道稍微有难度的JavaScript题目。 请问上述代码在浏览器环境下,输出结果是多少? 揭晓一下最终答案:
阅读全文
摘要:作者:方应杭 来源:知乎 你可能遇到过这样的 JS 面试题: var obj = { foo: function(){ console.log(this) } } var bar = obj.foo obj.foo() // 打印出的 this 是 obj bar() // 打印出的 this 是
阅读全文
摘要:之前写过一篇“漫谈前端优化”的文章,里面提到过DataUrl,粗鲁的描述了下,感觉不甚详焉,所以这几天也总结了这方面的知识,参考一些资料,补充一篇文章在这里,对这方面的资料来说,也是一种强化记忆应用; Data URL给了我们一种很巧妙的将图片“嵌入”到HTML中的方法。跟传统的用img标记将服务器
阅读全文
摘要:原型链(Prototype chain) 原型对象也是普通的对象,并且也有可能有自己的原型,如果一个原型对象的原型不为null的话,我们就称之为原型链(prototype chain)。 想象一个这种情况,2个对象,大部分内容都一样,只有一小部分不一样,很明显,在一个好的设计模式中,我们会需要重用那
阅读全文
摘要:何时是JSON,何时不是JSON? JSON就是一个有特殊规则的字符串,按照这个规则我们就可以把这个字符串解析成JS对象。 JSON是设计成描述数据交换格式的,他也有自己的语法,这个语法是JavaScript的一个子集。{ "prop": "val" } 这样的声明有可能是JavaScript对象字
阅读全文
摘要:在函数内部,有两个特殊的对象:arguments 和 this。其中, arguments 的主要用途是保存函数参数, 但这个对象还有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 arguments 对象的函数。 请看下面这个非常经典的阶乘函数 定义阶乘函数一般都要用到递归算法;如
阅读全文