【Day10】ASI 自动插入分号

ASI(Automatic Semicolon Insertion)

当 JavaScript 语句没有加上分号时,则会受到自动插入分号(ASI)规则影响,

因此有时不加分号程序码也不会出错,但结果不一定是自己想要的

范例:

function callName(){
    return
    'weiwei';
}

console.log(callName());

// 被 ASI 转换成
function callName(){
    return;
    'weiwei';
}

console.log(callName());

此时会回传 undefined 而不是 'weiwei'

因为受到自动插入分号(ASI)的影响,

会在 return 後方加上分号,

加上分号後 return 也就没有回传内容,

因此才会回传 undefined

如果显示 'weiwei' 的话就必须改成

function callName(){
    return 'weiwei';
}

console.log(callName());

再来看另一个范例

if (1 > 2) a = 1
else a = 2
console.log(a)

此时会回传 2

而该范例会被 ASI 转换

if (1 > 2) a = 1;
else a = 2;
console.log(a);

// 加入分号後可写在同一行
if (1 > 2) a = 1; else a = 2; console.log(a);

不会发生 ASI 的规则

如果新的一行开头

([/+-*%,.

不会发生 ASI 的规则

范例:

let a = 1
let b = a
+ a

console.log(b)  // 2

以上就是今天的内容,感谢观看!!


<<:  [Day 10] 每家公司都有资料产品

>>:  [Day 5] 站在巨人的肩膀上 - 回顾股票市场交易论文

[进阶指南] 严格模式( Day29 )

我们可以在开发环境中使用 <React.StrictMode>进入严格模式 严格模式帮...

[Day7] 隐式调用与显式调用是甚麽?

在Google助理平台上 呼叫Google助理调用Action的方式, 依据用户是否明白指出调用的...

Day 22. Zabbix 通知设定 - SMTP - Mail

今天跟大家介绍 Mail 通知,其实就是 SMTP server ~ 首先就是要准备一组帐号密码,通...

Day 46 (Node.js)

1.NPM版本 无须更新到最新,怕错误 2.制作专案package.json npm init np...

DAY8 MongoDB 批次操作(bulk wirte) 与 Operators

DAY8 MongoDB 批次操作(bulk wirte) 与 Operators bulk wri...