例:#include<cstdio>
using namespace std;
int main(){
int a,b;
a=1.3;
printf("%d\n",a);
b=a;//賦值
printf("%d\n",b);
}
輯賦值運(yùn)算符提議(https://github.com/tc39/proposal-logical-assignment)引入以下復(fù)合賦值運(yùn)算符:
a ||=b
a &&=b
a ??=b
JavaScript已經(jīng)有以下復(fù)合賦值運(yùn)算符:
+=-=*=/=%=**=
&=^=|=
<<=>>=>>>=
在我們研究所提出的算符之前,我們必須先繞一小段路,學(xué)習(xí)之前的"短路"
邏輯運(yùn)算符| |,&&??所有運(yùn)算符僅當(dāng)?shù)谝粋€操作數(shù)尚未確定結(jié)果時,才計(jì)算第二個操作數(shù):
邏輯賦值運(yùn)算符的工作方式與其他復(fù)合賦值運(yùn)算符不同:
為什么a | |=b等價于下面的表達(dá)式?
a | |(a=b)
為什么不是這樣呢?
a=a | | b
前一個表達(dá)式具有短路的優(yōu)點(diǎn):只有當(dāng)a的計(jì)算結(jié)果為false時,才會計(jì)算賦值。因此,只有在必要時才執(zhí)行賦值。相反,后一個表達(dá)式總是執(zhí)行賦值。
const books=[
{
isbn: '123',
},
{
title: 'ECMAScript Language Specification',
isbn: '456',
},
];
// Add property .title where it’s missing
for (const book of books) {
book.title ??='(Untitled)';
}
assert.deepEqual(
books,
[
{
isbn: '123',
title: '(Untitled)',
},
{
title: 'ECMAScript Language Specification',
isbn: '456',
},
]);
考慮以下函數(shù),該函數(shù)返回跨多行展開的表達(dá)式:
function canContainNumber(value) {
return typeof value==='number'
|| typeof value==='bigint'
|| typeof value==='string'
;
}
assert.equal(canContainNumber(''), true);
assert.equal(canContainNumber(Symbol()), false);
此表達(dá)式可以按如下方式分解:
錯誤方法:
document.getElementById("ifsss").val()方法賦值
b頁面iframe方法(案例)
<iframe id="ifsss" src="/test/a.html" width="414" height="299" name="left"></iframe>
解決方法:使用iframe專用id賦值
document.getElementById("ifsss").contentDocument.getElementById("content_id").innerHTML="更改的內(nèi)容";
此方法非常容易解決問題。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。