# 异常类型 # JS 代码执行异常 举个例子 12var a = {};a.b.c = 123; 针对 JS 代码执行异常我们可以 try...catch 包裹代码块,或者采用 window.addEventListener('error', listener) 来进行捕获 # Promise reject 异常 这类异常通常出现 promise 出现 reject 但是未被 catch 的情况 针对这类异常通常采用 window.addEventListener('unhandledrejection',...

# git commit 规范 # commit 格式: <type>(<scope>): <subject> type(必须): feat: 新功能、新特性 fix: 修改 bug perf: 更改代码,性能优化 refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修改) docs: 文档修改 style: 代码格式修改,注意不是 css 修改(例如分号修改) test: 测试用例新增、修改 build: 影响项目构建或依赖项修改 revert: 恢复上一次提交 ci:...

# apply, bind 联合调用对函数参数进行展开 1234567891011function spread(fn) { return Function.apply.bind( fn, null );}Promise.all( foo( 10, 20 )).then( spread( function(x,y){ console.log( x, y ); // 200 599 })) 主要在 return Function.apply.bind( fn, null ); 这段代码上。 bind 将 fn 绑定到...

# web_view 12345678910111213141516171819// xxx.etsimport web_webview from '@ohos.web.webview'web_webview.once("webInited", () => { console.log("setCookie")...

# 流程 # 格式 123function(req,res,next){ next();} 中间件函数的形参列表中,必须包含 next 参数,而路由处理函数中只包含 res 和 req # 使用方式 # 全局注册 1234567891011121314const express = require('express')const app = express()const mw = function (req, res, next) { console.log('mw mw...

# 概述 valueOf 和 toString 是对象的两个内置方法,它们用于将对象转换为原始值或字符串。每个对象都从 Object.prototype 继承了这两个方法,并且可以根据需要重写它们。 # valueOf 强制数字类型转换和强制基本类型转换优先会调用 valueOf # toString 强制字符串转换会优先调用 toString # valueOf 与 toString 的区别 特性 valueOf toString 目的 返回对象的原始值 返回对象的字符串表示 默认行为 返回对象本身(引用),多数对象不会覆盖 返回 “[object...

# 概述 收集一些常见的前端手撕题 # 转换回调函数为 Promise 函数 # 描述 编写一个函数,接受另一个函数 fn ,并将基于回调函数的函数转换为基于 Promise 的函数 一个可以传递给 promisify 的函数示例 12345678function sum(callback, a, b) { if (a < 0 || b < 0) { const err = Error('a and b must be positive'); callback(undefined,...

# 类型与语法 # 值 # 数组 # 稀疏数组 123456var a = [ ];a[0] = 1;// 此处没有设置a[1]单元a[2] = [ 3 ];a[1]; // undefineda.length; // 3 a [1] 实际上跟 undefined 还是有区别的 # 类数组 具有索引属性:类数组对象的元素以数字索引的方式存储,比如 obj [0]、obj [1] 等。 具有 length 属性:类数组对象通常拥有 length 属性,表示它包含的元素个数。 不是数组实例:类数组对象并不是 Array 的实例,所以它没有数组的一些内置方法,如 push ()、pop...

ES5 实现继承 12345678910111213141516171819function Animal(name) { this.name = name;}Animal.prototype.speak = function() { console.log(this.name + ' makes a noise.');};function Dog(name, breed) { Animal.call(this, name); this.breed =...

# 作用域与闭包 # 作用域是什么 作用域是根据名称查找变量的一套规则 # LHS 和 RHS 当变量出现在赋值操作的左侧时进行 LHS 查询,出现在右侧时进行 RHS 查询。 RHS 查询与简单地查找某个变量的值别无二致,而 LHS 查询则是试图找到变量的容器本身,从而可以对其赋值。 Q:为什么会有 LHS 和 RHS? A:LHS 和 RHS 找不到变量的处理是不一样的,LHS 找不到会创建一个变量, RHS 则会抛出错误(Unknow Variable)。 区分 LHS 和 RHS 可以让我们在查找变量方式上有其各自对应的处理方法 #...