Weichanglu

你知道的越多,你不知道的越多

Javascript 中向回调方法传递参数

人只有献身于社会,才能找出那短暂而有风险的生命的意义。 ——<阿尔伯特·爱因斯坦> 回调函数 通常下,你并不能给回调函数传递参数。 比如: 12345function callback() { console.log('Hi human');}document.getElementById('someelem').addEventListener('clic......

Javascript 中对数组洗牌、清空

一个人的价值,应该看他贡献什么,而不应当看他取得什么。 ——<阿尔伯特·爱因斯坦> 对数组进行洗牌 这段代码运用了 Fisher-Yates Shuffling算法 对数组进行洗牌。 https://www.wikiwand.com/en/Fisher%E2%80%93Yates_shuffle 123456789101112function shuffle(arr) {......

Javascript 中过滤并排序字符串列表

生活只有在平淡无味的人看来才是空虚而平淡无味的。 ——<尼古拉·加夫里诺维奇·车尔尼雪夫斯基> 开始 你可能有一个很多名字组成的列表,需要过滤掉重复的名字并按字母表将其排序。 在我们的例子里准备用不同版本语言的 JavaScript 保留字的列表,但是你能发现,有很多重复的关键字而且它们并没有按字母表顺序排列。 所以这是一个完美的字符串列表(数组)来测试我们的JavaScript......

Javascript 中避免修改和传递 `arguments` 给其他方法 — 影响优化

人生的价值,并不是用时间,而是用深度去衡量的。 ——<列夫·托尔斯泰> 背景 在 JavaScript 的方法里,arguments 参数可以让你访问传递给该方法的所有参数。arguments是一个类数组对象;arguments 可是使用数组标记访问,而且它有 length参数,但是它没有 filter、map和 forEach 这样内建到数组内的方法。因此,如下代码是一个非常常......

Javascript 中仅用一行代码生成 `[0, 1, ..., N-1]` 数列

人生不是一种享乐,而是一桩十分沉重的工作。 ——<列夫·托尔斯泰> 使用下面一行代码,我们就可以生成0…(N-1)数列。 开始 方法1 (需要 ES5) 1Array.apply(null, {length: N}).map(Function.call, Number); 简要说明 Array.apply(null, {length: N}) 返回一个由 u......

Javascript 中的高级特性

不畏惧失败是创造力的一个基本要素。——<艾尔文·兰德博士> 在 Javascript 里配置对象属性是可以实现的,比如将一个参数设为伪私有或者只读。这个特性从 ECMAScript 5.1 开始就可以使用了,因此近来的浏览器都是支持的。 要实现这些功能,你需要使用 Object 的原型方法 defineProperty,像这样: 12345678var a = {......

Javascript 中了解传值机制

创新需要勇气。——<亨利·马蒂斯> 理论上,JavaScript通过值传递。它既不是值传递也不是引用传递,具体取决于它的真实场景。要理解传值机制,看一下下面两个实例代码和解释。 123456789101112// 实例 1var me = { // 1true'partOf' : 'A Team'}; function myTeam(me) {......

JavaScript 中 reduce() 函数

好的设计能够促使观看者希望了解更多。——<亚历山大·伊斯里> Array.prototype.reduce() reduce() 方法对数组中每个元素执行一个由您提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。 12345678910const array1 = [1, 2, 3, 4];const reducer = (accumulator, curren......

JavaScript 中简单获取unix时间戳

不畏惧失败是创造力的一个基本要素。——<艾尔文·兰德博士> 在 Javascript 里,你可以简单的取得 unix 时间戳 取得 unix 时间戳 我们经常需要使用 unix 时间戳计算。有很多方法可以取得 unix 时间戳。目前取得 unix 时间戳最简单最快的方法是: 1234567const dateTime = Date.now();const timestamp = ......

JavaScript 中new的返回值

达到完美境界并不是无以复加,而是无可去除。——<安托万·德·圣·埃克苏佩里> 你将会遇到在 JavaScript 中使用 new 来分配新对象的一些情况。这将会扰乱你的思绪,除非你阅读了这篇文章并理解在内部发生了什么。 JavaScript 中的 new 操作在合理的情况下然会一个新的对象实例。我们来看,我们有一个构造函数: 123456789function Thing() &......

JavaScript 中的逗号操作符

不畏惧失败是创造力的一个基本要素。——<艾尔文·兰德博士> 除了分号之外,逗号允许你在同一个地方放多个语句。 例如: 12345678910for(var i=0, j=0; i<5; i++, j++, j++){ console.log("i:"+i+", j:"+j);}输出:i:0, j:0i:1, j:2i:2, j:4i:3, j:6i:4......

JavaScript 中取得文件扩展名

人只有献身于社会,才能找出那短暂而有风险的生命的意义。 ——<阿尔伯特·爱因斯坦> 获取文件扩展名 问题 1: 怎样取得文件扩展名? 12345678var file1 = "50.xsl";var file2 = "30.doc";getFileExtension(file1); //returs xslgetFileExtension(file2); //returs doc......

JavaScript 中的带重音字符的字符串排序

在事情成功之前,一切总看似不可能。——<纳尔逊·曼德拉> 基本 Javascript 具有自带方法排序功能,可以对数组进行排序。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort array.sort()会将每个数组项视为一个字符串,并按字母顺序对其......

JavaScript 中的严格模式和lazy

预测未来最好的方法就是去创造未来。——<亚伯拉罕·林肯> 严格模式的 JavaScript 使开发人员更容易编写“安全” JavaScript。 默认情况下,JavaScript允许程序员非常粗心,例如,当我们第一次引入变量时,不需要我们用“ var”声明变量。尽管这对于没有经验的开发人员来说似乎是一种便利,但是当变量名拼写错误或意外引用超出其范围时,它也是许多错误的根源。 程序......

虚拟DOM(Virtual Dom) VS 影子DOM(Shadow Dom)

一个人的价值,应该看他贡献什么,而不应当看他取得什么。 ——<爱因斯坦> 作者:Ashish Lahoti 译者:cl9000 原文:https://codingnconcepts.com/javascript/virtual-dom-vs-shadow-dom/#shadow-dom DOM DOM是文档对象模型的简写-这是一种通过对象表示结构化内容的方式。HTML,XH......

CSS 优化选择器 CSS与JS

人只有献身于社会,才能找出那短暂而有风险的生命的意义。 ——<阿尔伯特·爱因斯坦> TL; DR 选择器从右向左解释。 对于 CSS,最好使用 calss 而不是 id,因为第一个类可以比第二个类做同样的事情,甚至更多。为了提高代码的可伸缩性,您必须尽可能保持较低的专一性。 对于 JS,id 和高特异性将导致更有效的结果。你得直奔主题。但过于具体是没有意义的,会适得其反。 不要在......

JavaScript 中的 if 嵌套改善

To the one with a hammer, everything looks like a nail. (手中有锤,看什么都像钉)——<芒格> if 我们如何在 javascript 中改进和制作更有效的嵌套 if 语句? 12345678910111213if (color) { if (color === 'black') { printB......

JavaScript 中的包含方法

设计是品牌无声的形象大使。——<兰德·保罗> indexOf() 默认情况下,JavaScript没有包含方法。为了检查字符串中是否存在子字符串或数组中的项,您可以执行以下操作: 1234567var someText = 'javascript rules';if (someText.indexOf('javascript') !== -1) {}// or......

JavaScript 中的数组平均值和中位数

达到完美境界并不是无以复加,而是无可去除。——<安托万·德·圣·埃克苏佩里> 示例数组 1let values = [2, 56, 3, 41, 0, 4, 100, 23]; 平均值 要获得平均值,我们必须对数字求和,然后除以值的数量。步骤如下: 获取数组长度 总结价值 得到平均值 (sum/length) 1234let values = [2, 56, 3, 41, 0......

JavaScript 防止在AngularJs中创建不必要的作用域

创造力是自律与童心的结合体。——<罗伯特·格林> 原文链接:https://www.jstips.co/en/angular/preventing-unwanted-scopes-creation-in-angularjs/ AngularJs 最受赞赏的特性之一是理解和阻止 ng-model 数据范围是你经常遇到的主要挑战之一。在处理 ng-model 数据时,ng-rep......