面试题笔记-JS预编译
JS运行三部曲1、语法分析2、预编译3、解释执行(逐行执行)
预编译前奏1、任何变量未经声明就赋值,这个变量就为全局对象(window)所拥有2、全局上声明的任何变量,即使声明了也归window 所有;window就是全局的域
函数预编译1、创建 AO 对象(Activation Object 俗称执行期上下文)2、找形参和变量声明,将变量和形参名作为 AO 属性名,值为 undefined3、将实参值和形参统一4、找函数声明,会覆盖变量的声明
题目一global = 100function fn(){ var a = b = 1 console.log(global) global = 200 console.log(global) var global = 300 console.log(global)}fu()console.log(a)console.log(b)
解题一// 预编译前奏GO = { global: 100, b: 1}// 预编译阶段// 1、创建AO对象AO = {}// 2、找 ...
windows软件推荐(不定时更新)
以下软件是我自己使用过并觉得很不错的软件,很大众的就不收录了
提高效率
utools你的生产力工具集
QuickLook按空格快速预览可以直接在Microsoft Store下载
鼠标键盘脚本
MacroRecorder
磁盘分析
wiztree
SpaceSniffer图形化展示磁盘文件,方便管理
小工具
Twinkle Tray显示器亮度调节,适合台式机使用可以直接在Microsoft Store下载
Shake to Find晃一晃找鼠标、类似Mac不过感觉不是那么灵敏适合屏幕较大、分辨率高的用户
使用LeanCloud搭建短网址服务
前言之前写了个东西,需要使用url来传参,导致链接特别长,不利于分享。找了一些免费的短网址服务,不好用。受Valine启发,做了这个,感觉非常适合github pages使用。
原理1、使用uuid跟长网址一一对应存数据库注:因为自己玩数据少,就直接使用uuid了
实现1、在 leanCloud 网站上创建一个 leanCloud 应用(如果需要绑定域名且没有备案过请选择北美)2、本地创建项目,关联项目
// 登录账户并选择区域lean login// 创建项目并关联lean init xxx// 选择自己熟悉的语言环境
3、添加接口服务(以下为 node 代码)
router.get('/:id', async (ctx, next) => { let id = ctx.request.url.replace('/', ''); if (!_.isEmpty(id)) { const query = new LC.Query('shortUrl ...
vue keepAlive保持滚动条
路由配置meta: { keepAlive: true, scrollTop: 0,}router.beforeEach((to: Route, from: Route, next: () => void) => { if (from.meta.keepAlive && from.meta.scrollTop >= 0) { const $content = document.querySelector('#scroll_content'); // 可以用其他方式获取 const scrollTop = $content ? $content.scrollTop : 0; from.meta.scrollTop = scrollTop; } next();});
页面恢复if (this.$route.meta.scrollTop > 0) { const content: any = document.querySelecto ...
解决electron-vue中vuex的dispath无效问题
背景第一次整这个,搞了半天都没搞清楚,查了百度,找到如下文章,写的非常清楚。
参考Vue+Electron下Vuex的Dispatch没有效果的解决方案
Electron 设置 -webkit-app-region 后无法响应鼠标点击事件的解决方式
背景为了美观,关闭了系统的头部,使用自定义的头部,必然会有拖动的问题。
目前网上解决方案有几种:1、-webkit-app-region: drag2、通过响应页面的 mousemove 事件3、electron-drag
简单点,所以还是选择了第一种方案,于是有了点击事件问题。
问题使用-webkit-app-region: drag后,自己及子元素的click事件均无效。
解决方案1、更换方式2、子元素使用-webkit-app-region: no-drag
electron-vue main主进程调试
前言使用electron-vue搭建的项目调试main主进程与传统的electron略有不同
配置1、在VSCode –> 运行 –> 添加配置 –> node.js ,将会生成.vscode/lauch.json文件将文件中的configurations替换为
{ "name": "Electron Main", "program": "${workspaceFolder}/.electron-vue/dev-runner.js", "request": "launch", "skipFiles": [ "<node_internals>/**" ], "type": "node", "autoAttach ...
electron UnhandledPromiseRejectionWarning: RequestError: connect ETIMEDOUT 13.250.177.223:443
安装Electron失败UnhandledPromiseRejectionWarning: RequestError: connect ETIMEDOUT 13.250.177.223:443
尝试方案1、修改npm源为淘宝源 – 失败2、bash添加代理 – 失败
解决方案修改npm源为淘宝源
npm config edit添加如下代码electron_mirror=https://cdn.npm.taobao.org/dist/electron/npm i electron
参考如何正确挂代理解决执行 npm install 出现连接错误的问题?
telegram汉化
使用中文(简体)https://t.me/setlanguage/zh-hans-beta将以上链接随便发送,点击该链接,使用即可,支持全平台
其他语言https://translations.telegram.org/zh-hans/
Win10与子系统Ubuntu之间互相访问文件系统
1. 在win10环境下访问Ubuntu文件系统的home目录:C:\Users\xxx\AppData\Local\Packages\CanonicalGroupLimited.UbuntuXX.XXonWindows_79rhkp1fndgsc\LocalState\rootfs\home\xxx
2. 在Ubuntu系统下访问win10的目录:cd ../../mnt
在WSL环境下可以创建一个访问win10的快捷方式ln -s ../../mnt ~/win10
在ubuntu下通过下面的命令直接进入win10的目录cd win10
参考win10与子系统Ubuntu之间互相访问文件系统