export default function foo() 和 const foo = () => {} 都是用于定义 JavaScript 中的函数的语法,但它们之间有几个区别。1. 函数声明和函数表达式export default function foo() 使用了函数声明的方式来定义函数。函数声明的形式比较直观,并且具有提升性:即在函数声明之前就可以使用该函数。例如:foo(); // 正常运行,输出 "This is foo." function foo() { console.log('This is foo.'); }而 const foo = () => {} 所采用的则是函数表达式的形式。函数表达式需要赋值给一个变量,因此也被称为“匿名函数”。函数表达式相对于函数声明来说,更灵活,可以根据需要将其作为变量传递给其他函数、存储在数据结构中等。另外,在 JavaScript 模块中,函数表达式的使用更为广泛。同样的例子,使用函数表达式如下所示:// 报错:Uncaught ReferenceError: Cannot access
//document是一个DOM对象,这个对象本身没有ready方法,要使用就得自己定义,而且过程颇为复杂 //其中一种方法是: document.ready = function (callback) { if (document.addEventListener) { document.addEventListener('DOMContentLoaded', function () { document.removeEventListener('DOMContentLoaded', arguments.callee, false); callback(); }, false) } else if (document.lastChild == document.body) { callback(); } } //还有一种方法是: (function () { var ie = !!(window.attachEvent &a
本文主要记录下代码,方便下次复制粘贴前端部分HTMLlimit: 限制文件个数 1 个on-remove: 移除附件时的钩子函数,主要就 console 输出下on-error: 用于处理上传异常后的处理,本人这主要用来关闭弹窗和全屏等待file-list: 绑定附件auto-upload: 禁止自动上传,true 的话选了文件就自动上传http-request: 自定义上传文件请求方法action: 原上传文件的路径,由于使用了自定义上传文件请求,即 http-request,因此这个字段随便写就好,不写不行好像<el-upload ref="upload" :limit="1" :on-remove="handleRemove" :on-error="onError" :file-list="fileList" :auto-upload="false" :http-request="uploadFile" action=&
使用可选链操作符(?.)和空值合并运算符(??)简化代码一、可选链操作符 ( ?. )可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(nullish ) (null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值是 undefined。与函数调用一起使用时,如果给定的函数不存在,则返回 undefined。语法obj?.prop obj?.[expr] arr?.[index] func?.(args)1.简化代码前let result = { newUsers:[{value:1}] activeUsers:[{value:1}] lunchtimes:[{value:1}] } statisticalData = { newUsers: result.newUsers.length ? result.newUsers[0].value : 0, activeUsers: result.activeUse
ES13(ES2022)中11个新特性解读与其他大多数编程语言一样,JavaScript 也在不断发展中,每年都会增加很多新特性和功能来变得更强大,让开发人员能够编写更富有表现力和更简洁的代码。让我们了解一下ECMAScript 2022 (ES13)中添加的最新特性,并查看它们的使用示例,以便更好地理解它们。1. 类字段声明在ES13之前,类字段只能在构造函数中声明。与大部分语言不同,我们不能在类的最外层作用域声明或定义它们。类字段:字段是对象的属性,状态的表示,又称为域 域变量 成员变量 字段变量class Car { constructor() { this.color = 'blue'; this.age = 2; } } const car = new Car(); console.log(car.color); // blue console.log(car.age); // 2ES13 移除了这个限制。现在我们可以这样编写代码:class Car { color = 'blue'; age = 2; } const
JavaScript代码整洁( Clean Coding )最佳实践代码整洁( Clean Coding )是什么意思?所谓的clean code 字面上就是整洁代码的含义,落实到我们工程师日常coding中就是如何写出看上去干净、逻辑清晰、有一定抽象能力扩展性好的代码。写的代码是方便和同事协作开发,不单单是为机器编写,所有,代码尽可能让人容易理解。这些文字的定义显得不那么生动形象,看看下图左侧的就是clean code,右侧的就是WTF(让人看见想骂xx的意思) code。那么有的人会问clean code也有WTF,是不是还不是真正的clean code,如果你是一个追求极致的人那么这个问题没毛病。但是我想说的是没有什么代码没有0 WTF的,及时所谓非常整洁规范、干净的代码也或多或少是些小毛病。所以我们工程师能够向着0 WTF的方向去努力去优化自己的代码就是成功的。现在我们知道了开发者的目标是什么了,下面来一起看看最佳实践吧!变量应该如何命名?使用有意义且准确的名称,不要因为有长的名称而节省几个键盘敲击。如果您遵循此实践,变量会变得方便搜索,当你需要重构或者查找某些关键字的时候会有
1.cookie本身不是用于本地存储的,用于浏览器与服务端通信。可用document.cookie = '' 来修改,前后端均可修改。存储大小为4KB,http请求时会携带到服务端,增加服务端压力,请求数据量。修改API不合理。2.localStorage 和 sessionStorageHTML5新增专用于本地存储的,大小为5MB,API简单合理(setItem,getItem),不会随http请求发送。localStorage 永久存储,除非代码删除或手动删除;sessionStorage 会话存储,浏览器关闭会清空;一般localStorage 用的比较多。
// Promise Ajax方法 function ajax(url) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.onreadystatechange = () => { if (xhr.readyState === 4) { if (xhr.status === 200) { resolve(JSON.parse(xhr.responseText)) } else if (xhr.status === 404) { reject(new Error('404 not found')) } } } xh
1.手写简易Ajax//Ajax - GET请求 const xhr = new XMLHttpRequest(); // true 为异步,false为同步 xhr.open('GET', 'URL', false) xhr.onreadystatechange = () => { if (xhr.readyState === 4) { if (xhr.status === 200) { console.log(xhr.response); } } } xhr.send(null) //Ajax - POST请求 const post = new XMLHttpRequest(); // true 为异步,false为同步 post.open('POST', 'URL', true); post.onreadystatechange = () => { if (xhr.readyState === 4) { if (xhr.status === 200) {
Gonwe
一念智即般若生。
CC BY-SA 4.0