除了 https://www.nodeloc.com/d/26813/ 我提到的示范用法外,这个标签语法还可以和 break 或 continue 跳转到指定标签位置
// 标签语法:可以用 break 或 continue 跳转到指定标签位置
loop1: // 定义一个标签
for (let i = 0; i < 3; i++) {
loop2:
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) {
break loop1; // 直接跳出外层循环
}
console.log(i, j);
}
}
运行会依次输出 0 0, 0 1, 0 2, 1 0
其他冷知识awa
with 语句
最开始我接触这个还是 VB6, 后面深入研究发现 JavaScript 也有
const obj = { a: 1, b: 2 };
with (obj) {
console.log(a + b); // 3(直接访问 obj 的属性)
}
不过要注意的是这个在js已弃用,而且可能导致性能问题和歧义
位运算符(~
)
如果对一个数字前面加上2个~
,那么就相当于取整,虽然方便,但是不建议这么用
console.log(~~3.14); // 输出 3
自定义模版字符串
这个基本上没人知道吧(
function love(strings, ...values) {
return strings.reduce((acc, str, i) =>
acc + str + (values[i] ? `<love>${values[i]}</love>` : ''), ''
);
}
const name = "4n0n4me";
console.log(love`Hello ${name}!`);
会输出 Hello, <love>4n0n4me</love>!
**(不让骂人)ASI
猜测这个函数输出是什么
function test() {
return
{
key: "value"
};
}
undefined ~ ,因为 ASI 会在 return 后面补全 ;