每天弄懂一道面试题/Js小知识
实现 Promise.retry…
forEach…
vue-view-model…
isBatchingUpdates-dirtyComponents…
talk-modules….
judge-array….
loader-plugin….
Simplified-Twitter….
string…
heap…
array…
webpack…
数据类型转换…
关于css的透明度…
promise…
js的作用域…
js的异步历程…
深入es6…
深入了解DOM和BOM…
数组按顺序插值…
为什么token相对cookie安全…
数组去重…
取出数组中符合特定条件的元素…
more string…
Object.prototype.toString.call() 、 instanceof 以及 Array.isArray() …
call,apply…
关于ua…
想想其他的思路…
理解任务队列(消息队列)…
说说你的理解…
有几种方式实现…
介绍下 npm 模块安装机制,为什么输入 npm install 就可以自动安装对应的模块?…
假设4次挥手中,如果没有(稍等,还有最后一个包),那是不是就是三次挥手…
对象类型会调用 toString 方法转换成字符串 [object Object…
进行排序,输出结果…
对话框支持可拖拽…
flatten的基本实现,具体可以参考lodash库的flatten源码…
比如 sleep(1000) 意味着等待1000毫秒…
(5).add(3).minus(2) …
改造下面的代码,使之输出0 - 9…
什么是防抖和节流?有什么区别?如何实现?…
通过new的模拟实现,带大家揭开使用new获得构造函数实例的真相 new 一句话介绍…
将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组…
每天5分钟弄懂一个知识点…
获取一年中所有周六周日…
算法题…
早在 2013年, 加里·伯恩哈德就在微博上发布了以下代码段…
来自某大厂的一道笔试题…
请把俩个数组 [A1, A2, B1, B2, C1, C2, D1, D2] 和 [A, B, C, …
模块化主要是用来抽离公共代码,隔离作用域,避免变量冲突等…
对数组进行冒泡排序算是比较简单的,冒泡排序也是容易理解的一种排序算法了,在面试的时候,很可能就会问到…
其中一个主要的区别在于浏览器的event loop 和nodejs的event loop 在处理异步事件的顺序是不同…
浏览器会把HTML解析成DOM,把CSS解析成CSSOM,DOM和CSSOM合并就产生了渲染树(Render Tree)…
Set 是一种叫做集合的数据结构,Map 是一种叫做字典的数据结构…
用const和let声明的变量,不会存在window对象中大家都知道在全局 …
某公司 1 到 12 月份的销售额存在一个对象里面……
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标
有时候我们需要将一个对象的某些属性放到白名单里,这样来说,我们有一个数组代表了一张数据库表,并且为了一些功能我们需要从中选出(select)一些字段。
select
JavaScript 中一个很棒的相等比较解决方案
在这里 tap 是一个小怪物。一个可以用来快速调试、链式调用、匿名函数,还可以打印任何你想打印的东西的函数。
在 JavaScript 中 数组(Array)随处可见,使用ECMAScript 6 中的新特性 扩展运算符 你可以做很多很棒事情。在这边文章中,我将为你介绍在编码中有用的3个技巧。
一个控制超时的技巧
理解在 JavaScript 中如何使用 Bind 方法绑定对象和函数
Bind
分享三个让开发变得更高效的实用语法糖
在这个 tip,我将介绍 var 和 let 之间不同的作用域。我应该使用 let 替代 var 吗?让我们来看一下吧!
循环一个list从中寻找一个或一些值,是一个很常见的需求。但是即使我们要找的元素就是数组里的第一个,我们不也能从循环中直接return,只能遍历整个数组。本文教你如何使用.some和.every快速结束循环。
list
return
.some
.every
在一个表达式中,由左到右计算每个表达式并返回最后一个。
本周我做了一个简单的“复制到剪贴板”按钮,这是我第一次做这种功能,向大家分享一下我的实现方法。
有时我们需要不停的循环数组的元素,就像一组旋转的图片,或者音乐的播放列表。这里告诉你如何使一个数组拥有循环的能力。
使函数的参数与回调函数为可选参数。
如何更加高效的取得文件扩展名呢?
理解使用new与不使用new时将返回什么值
简单而优雅地操作DOM事件的方法
运用&&与条件断点的实用的log技巧
&&
log
在Javascript里,你可以简单的取得unix时间戳
使用reduce()函数时的一些建议
reduce()
理解并应用变量的声明。
跨浏览器且纯JavaScript检测document是否加载完成。
对于纯数字数组,使用内置函数Math.max()和Math.min()的方法。
JavaScript理论上说只传递原始类型和对象(或引用)类型的值。在引用类型的情况下引用值本身通过值传递。
你知道在函数参数内也可以使用解构吗?
冻结内置对象的原型方法。
计算数组的平均值与中位数
将JSON对象的参数选择性地生成字符串。
怎样给一个对象添加私有参数、getter或setter。
getter
setter
将多位数组转化为单一数组的三种不同方法。
移除包含不同类型数据的数组中重复的元素。
当你为存在的网站开发扩展插件时,由于现代的动态Javascript,操作DOM并不是很容易。
赋值是很常见的。有时候打字对于我们这些“懒惰的程序员”来说是很费时间的。所以,我们可以使用一些小把戏来使我们的代码更清楚更简单。
实现异步循环时,你可能会遇到问题。
我们可以创建一个函数,它可以仅用一行代码生成0…(N-1)数列。
对象是一个无序的对象集合。这意味着如果你想在对象里保存有序的数据,你需要重新处理它,因为对象里的数据不保证是有序的。
在JavaScript的方法里,arguments参数可以让你访问传递给该方法的所有参数。arguments是一个类数组对象;arguments可是使用数组标记访问,而且它有length参数,但是它没有filter、map和forEach这样内建到数组内的方法。因此,如下代码是一个非常常见的将arguments转换为数组的办法
arguments
filter
map
forEach
逻辑运算符是JavaScript的核心之一,在这里你将看到一种无论你传什么值都可以总是得到true或false的方法。
大家对斐波那契(Fibonacci)数列都很熟悉。我们可以再20秒内写出下面这样一个方法,它可以运行,但并不高效。它做了太多重复的运算,我们可以通过存储这些运算结果来使其加速。
柯里化(currying)与部分应用(partial application)是两种将一个函数转换为另一个有着较小普通参数个数的函数的方法。
短路求值是说, 只有当第一个运算数的值无法确定逻辑运算的结果时,才对第二个运算数进行求值:当AND(&&)的第一个运算数的值为false时,其结果必定为false;当OR(||)的第一个运算数为true时,最后结果必定为true。
||
你可能有一个很多名字组成的列表,需要过滤掉重复的名字并按字母表将其排序。
立即执行函数表达式( IIFE - immediately invoked function expression)是一个立即执行的匿名函数表达式,它在Javascript中有一些很重要的用途。
== (或者 !=) 操作在需要的情况下自动进行了类型转换。=== (或 !==)操作不会执行任何转换。===在比较值和类型时,可以说比==更快。
!=
===
!==
==
将字符串转换为数字是极为常见的。最简单和快速的方法是使用+(加号) 来实现。
+
在JavaScript中清空一个数组有很多方法,但这是一个最高效的方法。
Fisher-Yates Shuffling 算法对数组进行洗牌
在面向对象的Javascript中为对象建立一个方法时,返回当前对象可以让你在一条链上调用方法。
假如你需要拼接一些不确定类型的变量为字符串,你需要确保算术运算符在你拼接时不会起作用。使用concat
通常情况下~~X比Math.trunc(X)要快,但同时也会使你的代码做一些讨厌的事情。
~~X
Math.trunc(X)
在Node里,你可以让你的程序根据其运行自require('./something.js')或者node something.js而做不同的处理。如果你想与你的一个独立的模……
require('./something.js')
node something.js
通常下,你并不能给回调函数传递参数,但是你可以借助Javascript闭包的优势来传递参数给回调函数。
JavaScript并未提供contains方法。检测子字符串是否存在于字符串或者变量是否存在于数组你可能会这样做。
介绍一个ES6的新特性,箭头函数或许一个让你用更少行写更多代码的方便工具。
快速的测量javascript的性能,我们可以使用console的方法,例如 console.time(label)和 console.timeEnd(label)
console.time(label)
console.timeEnd(label)
在许多编程语言中,方法的参数时默认强制需要的,开发人员需要明确定义一个可选的参数。
理解变量提升有助于管理函数作用域
这是一些检查某对象是否有某属性的方法。
ES6中,JS现在有了引号拼接字符串的替代品,模板字符串。
这是一个快速、安全、可重用的方法将node list转换为DOM元素的数组。
JavaScript的严格模式使开发者更容易写出“安全”的代码。
写一个方法可以接受单个参数也可以接受一个数组,而不是分开写两个方法。这和jQuery的一些方法的工作原理很像(css 可以修改任何匹配到的选择器).
css
理解undefined与null的区别。
undefined
null
Javascript有一个原生方法sort可以排列数组。一次简单的array.sort()将每一个数组元素视为字符串并按照字母表排列。但是当你试图整理一个非ASCII元素的数组时,你可能会得到一个奇怪的结果。
array.sort()
我们怎样来提高和优化javascript里嵌套的if语句呢?
if
向一个数组中插入元素是平时很常见的一件事情。你可以使用push在数组尾部插入元素,可以用unshift在数组头部插入元素,也可以用splice在数组中间插入元素。