Ryan Shang

生死看淡,不服就干

0%

突然之间,就想写点东西。

有人问过我,为什么选择北漂?

当时自己嘴上的回答很简单:自己的行业在西安找一份高工资的工作不容易,尤其是自己还处于处起步阶段,是个前端界的小学生。

其实,说心里话,当时自己心里也没有答案。

这么一两年过去了,可能心里面也有了答案。

阅读全文 »

在面试中遇到了这么两道题,当时没有做出来,挺有意思,记录下来。

一、数组中找出项的组合

1
从一个数组中找出几个项和为M的所有可能。

当时乍一看想到把所有情况枚举一边,但是仔细看不知道怎么下手,回来仔细想了下,确定了个思路,可以把每一个组合转化成二进制,比如[1, 2, 3, 4]中数组第一项和第三项的组合就可以用1010表示,这样就可以快速列出所有组合的情况,然后算出对应项的和,等于M的就返回。

这个思路需要解决这么几个问题:

阅读全文 »

call、apply和bind常用来显示改变函数运行环境中的this指向,这几天突发奇想如果call.call、bind.bind和bind().band()会是怎样的结果,先记录一下,给出一下我现在认为的结论,后面有时间了,深入研究下。

公共

1
2
3
4
5
6
7
8
function fn01 () { console.log('fn01:', this); }
function fn02 () { console.log('fn02:', this); }
let obj = { fn: fn01 }
let fn03 = obj.fn;
fn01(); // fn01 window
fn02(); // fn02 window
fn03(); // fn01 window
obj.fn(); // fn01 obj

这其中定义了两个函数fn01和fn02以及一个对象,每个方法右面注释是执行主体和this指向。上面的几种是比较常见的情况。

call

阅读全文 »

JavaScript中总会出现很多有意思的小地方,这里会把我遇到的问题进行总结,并不定期更新。

1. 函数提升和变量提升的优先级?

函数的执行一般有这么几个步骤:

  1. 开辟一个私有作用域
  2. 形参赋值
  3. 变量提升和函数提升
  4. 代码按顺序执行

其中第三步,函数声明的提升优先级要高于变量提升。

阅读全文 »

1. 打包出现无用html

KA管理员平台登录页面复用KA客户平台登录页面,登录页面需要把部分js通过Webpack打包方式插入到页面中。由于管理员平台采用Vue-Cli3,Vue-Cli3中帮我们处理了需要HtmlWebpackPlugin的地方,在vue.config.js中配置page就会自动编译为HtmlWebpackPlugin的相关配置。但因为登录页面login.html中需要打包进去几个js文件,js文件如果也写在pages配置中,会导致build后多出无用的html文件。

2-1-1-1

如上图,这样打包会导致出现hover3D.html、stage.html和logincss.html几个无用文件。

解决方案是把除了index的部分注释掉,然后把login相关配置写在configureWebpack中。沿用以前的配置,配置写在entry中(不过官方貌似不推荐这么做),然后配置登录页的HtmlWebpackPlugin插件。Vue-Cli3会把configureWebpack中的内容merge到webpack的配置中去。

阅读全文 »