• (a ==1 && a== 2 && a…

    Posted by : lon.y@qq.com on 2018年1月30日

    一个有趣的问题: 在 JavaScript 中, (a ==1 && a== 2 && a==3) 是否有可能为 true ? 这是一道我被某科技公司问到的面试题。发生在两周之前,我仍然在努力寻找答案。 我知道我们从来不会在日常工作中写出这样的代码,但我对问题的答案仍然十分很好奇。 解法一: 利用松散相等运算符 == 的工作原理,你可以简单地创建一个带有自定义toString( 或者 valueOf)函数的对象,在每一次使用

    阅读全文...

  • LCS 算法:Javascript 最长公共子序列

    Posted by : lon.y@qq.com on 2018年1月30日

    最长公共子序列(Longest Common Subsequence LCS)是从给定的两个序列X和Y中取出尽可能多的一部分字符,按照它们在原序列排列的先后次序排列得到。LCS问题的算法用途广泛,如在软件不同版本的管理中,用LCS算法找到新旧版本的异同处;在软件测试中,用LCS算法对录制和回放的序列进行比较,在基因工程领域,用LCS算法检查患者DNA连与键康DNA链的异同;在防抄袭系统中,用LCS算法检查论文的抄袭率。LCS算法也可以用于程序代码相似度度量

    阅读全文...

  • webassembly 的那些事

    Posted by : lon.y@qq.com on 2018年1月30日

    简介 JS于1995年问世,设计的初衷不是为了执行起来快。直到08年性能大战中,许多浏览器引入了即时编译 JIT(just-in-time编译器),JavaScript 代码的运行渐渐变快。正是由于这些 JIT 的引入,使得 JavaScript 的性能达到了一个转折点,JS 代码执行速度快了 20 — 50倍。 JIT 是使 JavaScript 运行更快的一种手段,通过监视代码的运行状态,把 hot 代码(重复执行多次的代码)进行优化。通过这种方式,可

    阅读全文...

  • 10分钟理解JS引擎的执行机制

    Posted by : lon.y@qq.com on 2018年1月21日

    深入理解JS引擎的执行机制 1.灵魂三问 : JS为什么是单线程的? 为什么需要异步? 单线程又是如何实现异步的呢? 2.JS中的event loop(1) 3.JS中的event loop(2) 4.说说setTimeout 首先,请牢记2点: (1) JS是单线程语言 (2) JS的Event Loop是JS的执行机制。深入了解JS的执行,就等于深入了解JS里的event loop 1.灵魂三问 : JS为什么是单线程的? 为什么需要异步? 单线程又是

    阅读全文...

  • JavaScript 背包问题详解

    Posted by : lon.y@qq.com on 2018年1月18日

      引子 打算好好学一下算法,先拿背包问题入手。但是网上许多教程都是C++或java或python,大部分作者都是在校生,虽然算法很强,但是完全没有工程意识,全局变量满天飞,变量名不明所以。我查了许多资料,花了一个星期才搞懂,最开始的01背包耗时最多,以前只会枚举(就是普通的for循环,暴力地一步步遍历下去),递归与二分,而动态规划所讲的状态表与状态迁移方程为我打开一扇大门。 01背包问题 篇幅可能有点长,但请耐心看一下,你会觉得物有所值的。本文以后还会扩

    阅读全文...

  • webpack 持久化缓存实践

    Posted by : lon.y@qq.com on 2018年1月16日

    前言 最近在看 webpack 如何做持久化缓存的内容,发现其中还是有一些坑点的,正好有时间就将它们整理总结一下,读完本文你大致能够明白: 什么是持久化缓存,为什么做持久化缓存? webpack 如何做持久化缓存? webpack 做缓存的一些注意点。 持久化缓存 首先我们需要去解释一下,什么是持久化缓存,在现在前后端分离的应用大行其道的背景下,前端 html,css,js 往往是以一种静态资源文件的形式存在于服务器,通过接口来获取数据来展示动态内容。这就

    阅读全文...

  • 深入理解 webpack 文件打包机制

    Posted by : lon.y@qq.com on 2018年1月16日

    前言 最近在重拾 webpack 一些知识点,希望对前端模块化有更多的理解,以前对 webpack 打包机制有所好奇,没有理解深入,浅尝则止,最近通过对 webpack 打包后的文件进行查阅,对其如何打包 JS 文件有了更深的理解,希望通过这篇文章,能够帮助读者你理解: webpack 单文件如何进行打包? webpack 多文件如何进行代码切割? webpack1 和 webpack2 在文件打包上有什么区别? webpack2 如何做到 tree sh

    阅读全文...

  • 在 Node 的帮助下,横跨多平台的 JavaScript 已经赢了

    Posted by : lon.y@qq.com on 2018年1月15日

    编者按:很多人都在寻找一个能够统一编程语言江湖的“老大哥”,战火也重来没有停止过。 作者写在前面的话:这篇文章已经引起了大量的反对,因为很多人并不认为JavaScript是编程语言中的胜利者。 尽管我承认,我的标题可能会引起争议,可能会更加让人有点击欲望。但我还是想强调,这篇文章并不是说JS是“最好”的语言。 我只是在文章中简单地描述了它所覆盖的领域,以及它能够让简单的前端开发人员做更多事情的方法。 在编程的世界里,有一场旷日持久的战争。自从计算机问世以来

    阅读全文...

  • 轻松学习 JavaScript(8):JavaScript 中的类

    Posted by : lon.y@qq.com on 2018年1月15日

    ECMAScript 6引入了class关键字以创建JavaScript中的类。现在,你可以使用class属性在JavaScript中创建类。在ECMA 6之前,无论何时使用new运算符调用一个函数,该函数都会返回一个新对象。因此,此函数是作为一个类来使用的,并被称为构造函数。这种调用函数来返回对象的方式也被称为构造函数调用模式。但在ECMAScript 6中,可以使用class关键字创建类。请看下面的代码: class Car { constructor

    阅读全文...

  • npm 发布 2017 JavaScript 框架报告:React 占主导地位

    Posted by : lon.y@qq.com on 2018年1月12日

    npm 的联合创始人兼首席运营官 Laurie Voss 近日发布了 2018 年的第一个 JavaScript 现状报告,这一系列报告包含三部分,将会提供 JavaScript 发展趋势和实践的完整回顾。第一部分讲述了 2017 前端框架的现状,第二部分将讲述 React 的生态系统,第三部分将对后端框架进行讲述。目前,第二和第三部分尚未发布。 Laurie Voss 说,JavaScript 社区在编程语言史上以前所未有的速度增长着,npm 中的包也随

    阅读全文...