Rumah  >  Artikel  >  hujung hadapan web  >  Adakah terdapat ampersand dalam es6?

Adakah terdapat ampersand dalam es6?

青灯夜游
青灯夜游asal
2022-11-01 19:24:251274semak imbas

mempunyai ampersand. Dalam es6, "&&" ialah operator AND logik, yang merupakan operasi AND Boolean Sintaks ialah "operand 1 && operand 2" hanya apabila kedua-dua operan adalah benar, ia akan mengembalikan benar. Logik AND ialah sejenis logik litar pintas Jika ungkapan di sebelah kiri adalah palsu, hasilnya dikembalikan secara langsung dan ungkapan di sebelah kanan tidak lagi dinilai.

Adakah terdapat ampersand dalam es6?

Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.

Terdapat simbol & dalam es6 dan "&&" ialah operator logik DAN.

Logik DAN operasi &&

Logik DAN operasi (&&) ialah operasi AND Boolean. Mengembalikan benar hanya jika kedua-dua operan adalah benar, jika tidak mengembalikan palsu. Penerangan terperinci ditunjukkan dalam jadual.

逻辑与运算
第一个操作数 第二个操作数 运算结果
true true true
true false false
false true false
false false false

Logik DAN ialah sejenis logik litar pintas Jika ungkapan di sebelah kiri palsu, hasilnya akan menjadi litar pintas dan dikembalikan terus, dan ungkapan di sebelah kanan tidak lagi. dinilai. Logik operasi adalah seperti berikut:

  • Langkah 1: Kira nilai operan pertama (ungkapan di sebelah kiri).

  • Langkah 2: Semak nilai operan pertama. Jika nilai ungkapan di sebelah kiri boleh ditukar kepada palsu (seperti null, undefined, NaN, 0, "", false), maka operasi akan tamat dan nilai operan pertama akan dikembalikan secara langsung.

  • Langkah 3: Jika operan pertama boleh ditukar kepada benar, nilaikan operan kedua (ungkapan sebelah kanan).

  • Langkah 4: Kembalikan nilai operan kedua.

Contoh 1

Kod berikut menggunakan operasi logik DAN untuk mengesan pembolehubah dan memulakannya.

var user;  //定义变量
(! user && console.log("没有赋值"));  //返回提示信息“没有赋值”

bersamaan dengan:

var user;  //定义变量
if (! user){  //条件判断
    console.log("变量没有赋值");
}

Jika nilai pengguna pembolehubah ialah 0 atau nilai palsu seperti rentetan kosong ditukar kepada nilai Boolean, ia adalah palsu , kemudian apabila pembolehubah diberikan nilai Selepas itu, ia masih menggesa bahawa pembolehubah tidak diberikan nilai. Oleh itu, semasa mereka bentuk, anda mesti memastikan bahawa nilai pulangan ungkapan di sebelah kiri logik DAN ialah nilai yang boleh diramal.

var user = 0;  //定义并初始化变量
(! user && console.log("变量没有赋值"));  //返回提示信息“变量没有赋值”

Ungkapan di sebelah kanan seharusnya tidak mengandungi operasi yang sah seperti penugasan, kenaikan, pengurangan dan panggilan fungsi, kerana apabila ungkapan di sebelah kiri palsu, ungkapan di sebelah kanan akan menjadi dilangkau secara langsung, yang akan menyebabkan masalah berikut berpotensi impak pada operasi.

Contoh 2

Menggunakan operator logik DAN boleh menggantikan reka bentuk berbilang struktur cawangan.

var n = 3;
(n == 1) && console.log(1);
(n == 2) && console.log(2);
(n == 3) && console.log(3);
( ! n ) && console.log("null");

Kod di atas adalah bersamaan dengan struktur berbilang cawangan berikut.

var n = 3;
switch(n){
    case1:
        console.log(1);
        break;
    case2:
        console.log(2);
        break;
    case3:
        console.log(3);
        break;
    default:
        console.log("null");

Operan bagi operasi logik DAN boleh menjadi sebarang jenis nilai dan mengembalikan nilai ungkapan asal dan bukannya menukar operan kepada nilai Boolean dan kemudian mengembalikannya.

1) Benar apabila objek ditukar kepada nilai Boolean. Sebagai contoh, objek kosong secara logik ANDed dengan nilai Boolean.

console.log(typeof ({} && true));  //返回第二个操作数的值  true的类型:布尔型
console.log(typeof (true && {}));  //返回第二个操作数的值  {}的类型:对象

2) Jika operan mengandungi null, nilai pulangan sentiasa null. Sebagai contoh, operasi logik DAN rentetan "null" dengan nilai jenis null sentiasa mengembalikan null tanpa mengira kedudukan.

console.log(typeof ("null" && null));  //返回null的类型:对象
console.log(typeof (null && "null"));  //返回null的类型:对象

3) Jika operan mengandungi NaN, nilai pulangan sentiasa NaN. Sebagai contoh, operasi logik DAN rentetan "NaN" dengan nilai jenis NaN sentiasa mengembalikan NaN tanpa mengira kedudukan.

console.log(typeof ("NaN" && NaN));  //返回NaN的类型:数值
console.log(typeof (NaN && "NaN"));  //返回NaN的类型:数值

4) Untuk Infiniti, ia akan ditukar kepada benar dan mengambil bahagian dalam operasi logik DAN seperti nilai biasa.

console.log(typeof ("Infinity" && Infinity));  //返回第二个操作数Infinity的类型:数值
console.log(typeof (Infinity && "Infinity"));  //返回第二个操作数"Infinity"的类型:字符串

5) Jika operan mengandungi undefined, kembali undefined. Sebagai contoh, operasi logik DAN rentetan "undefined" dengan nilai jenis undefined sentiasa mengembalikan undefined tanpa mengira kedudukan.

console.log(typeof ("undefined" && undefined));  //返回undefined
console.log(typeof (undefined && "undefined"));  //返回undefined

Pengetahuan lanjutan: Operasi && dan __ yang kurang diketahui dalam ES6

Seperti yang kita semua tahu, dalam es6, logik operasi Simbol && mewakili dan syarat, || mewakili atau syarat

let info = {
  name:"long",
  age:null
};

//&&
//info的name与age同时为真,则结果为真
if(info.name && info.age){
  console.log("与条件"); //与条件
}else{
  console.log("失败");
}

//||
//info的name或age,只要有一个为真,则结果为真
if(info.name || info.age){
  console.log("或条件"); //或条件
}else{
  console.log("失败");
}

bukannya if/else

Walau bagaimanapun, ia juga boleh mewakili if/else untuk memudahkan.

let info = {name:"long"};

let name = info && info.name; //long

let isVip = false;
let vipPrice = isVip || 19;//19
decide() && true();

//如果decide()执行后为true,则执行true(),并输出true()的值;如果decide()执行后为false,则输出decide()执行后的结果,且不执行true()


//预计使用场景,有一个mongo查询条件where,当name存在时,匹配name数据
where= {age:19};
name && where.name = name;
decide() || false();

//如果decide()执行后为true,则执行decide(),并输出decide()的值,fasle()不执行;如果decide()执行后为false,则执行fasle(),且输出false()的结果
decide() && true() || fasle();

//如果decide()执行后为true,则执行true(),并输出true()的值;
//如果decide()执行后为false,则执行false(),并输出false()的值

[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web]

Atas ialah kandungan terperinci Adakah terdapat ampersand dalam es6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn