随手记(五):js函数参数默认值+热更新失效问题+常见操作符

1.js函数参数

ES5写法

如果函数在调用时未提供隐式参数,参数会默认设置为: undefined

function myFunction(x, y) {
    y = y || 0;
}

ES6写法

function myFunction(x, y = 10) {
    // y is 10 if not passed or undefined
    return x + y;
}

myFunction(0, 2) // 输出 2
myFunction(5); // 输出 15, y 参数的默认值

2. 热更新失效,控制台报错:sockjs-node/info?t= net::ERR_CONNECTION_TIMED_OUT

相关介绍:sockjs-node 是一个JavaScript库,提供跨浏览器JavaScript的API,创建了一个低延迟、全双工的浏览器和web服务器之间通信通道。

解决方法一:修改 vue.config.js 里的host

module.exports = {
  devServer:{
    host: 'localhost'
  }
}

解决方法二:(不推荐)

1. 找到/node_modules/sockjs-client/dist/sockjs.js

2. 在1603行,注释掉 self.xhr.send(payload); 这一行

参考:八猫儿人类编程 https://www.bilibili.com/read/cv17579958/ 

3. 递归Tip

在递归过程中,如果递归依赖上一次递归的结果,需要将结果return。
如果不需要上一次的结果,就不需要return。

4. vue项目启动

在项目的运行中,main.js作为项目的入口文件。运行中,找到其实例需要挂载的位置,即index.html中,刚开始,index.html的挂载点处的内容会被显示,但是随后就被实例中的组件的模板内容所取代,所以我们会看到有那么一瞬间会显示出index.html中正文的内容(开控制台看dom elements会更明显)。而index.html中的title部分不会被取代,所以会一直保留。

5. shims-vue.d.ts

shims-vue.d.ts是为了 typescript 做的适配定义文件,因为.vue 文件不是一个常规的文件类型,ts 是不能理解 vue 文件是干嘛的。加这个文件是是告诉 ts,vue 文件是这种类型的。

 6. 操作符

  • ?. 可能会存在,让后面那个变量就算没有也不报错
  • !. 一定会存在,断言,我们确信这个字段100%出现
  • !! 类型转换
  • ??(空值合并运算符) 当左边的值为null或undefined的时候 就取??右边的值 。

以前,如果想为一个变量赋默认值,通常的做法是使用逻辑或运算符(||),然而,由于||是一个布尔逻辑运算符,左侧的操作数会被强制转换成布尔值用于求值。任何假值(0, '', NaN, null, undefined)都不会被返回。这导致如果使用0''NaN作为有效值,就会出现不可预料的后果。

let count = 0;
let text = "";

let qty = count || 42;
let message = text || "hi!";
console.log(qty);     // 42,而不是 0
console.log(message); // "hi!",而不是 ""

let preservingFalsy =text ?? 'Hi neighborhood';
console.log(preservingFalsy); // '' (as text is neither undefined nor null)

 

空值合并运算符可以避免这种陷阱,其只在第一个操作数为null 或 undefined 时(而不是其它假值)返回第二个操作数

参考资料: MDN 表达式和运算符 

posted @ 2022-12-29 14:08  某星座的海星  阅读(241)  评论(0)    收藏  举报