ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の演算子と式の概要
この記事では、JavaScript の演算子と式について説明します。必要な方は参考にしてください。
delete 演算子は、オブジェクトの属性を削除するために使用されます。この属性への参照がない場合、最終的に解放されます
構文: delete 式
演算子は、指定されたプロパティをオブジェクトから削除します。正常に削除された場合は true を返し、それ以外の場合は false を返します
let Employee = { age: 28, name: 'abc', designation: 'developer' }; console.log(delete Employee.name); // returns true console.log(delete Employee.age); // returns true console.log(Employee); //{designation: "developer"}
typeof 演算子は、計算されていないオペランドの型を示す文字列を返します
構文: typeof operand typeof (operand);
void 演算子は指定された式を評価し、未定義を返します構文: void 式typeof NaN === 'number'; typeof Number(1) === 'number'; typeof "" === 'string'; typeof true === 'boolean'; typeof Symbol('foo') === 'symbol'; typeof undefined === 'undefined'; typeof null === 'object' typeof [1, 2, 4] === 'object'; typeof new Boolean(true) === 'object'; typeof new Number(1) === 'object'; typeof new String("abc") === 'object'; typeof function(){} === 'function';2. 関係演算子1.in 演算子if 指定されたプロパティが指定されたオブジェクトまたはそのプロトタイプ チェーン内にある場合、in 演算子は戻り値を返します。 true構文: prop in object
<a href="javascript:void(0);"> 这个链接点击之后不会做任何事情,如果去掉 void(), 点击之后整个页面会被替换成一个字符 0。 </a> <p> chrome中即使<a href="javascript:0;">也没变化,firefox中会变成一个字符串0 </p> <a href="javascript:void(document.body.style.backgroundColor='green');"> 点击这个链接会让页面背景变成绿色。 </a>2.instanceof演算子instanceof演算子は、オブジェクトがそのプロトタイプチェーンにあるかどうかをテストするために使用されますコンストラクターのプロトタイプ属性があります構文: objectinstanceofconstructor
let trees = new Array("redwood", "bay", "cedar", "oak", "maple"); console.log(0 in trees); // 返回true console.log(3 in trees); // 返回true console.log(6 in trees); // 返回false console.log("bay" in trees); // 返回false (必须使用索引号,而不是数组元素的值) console.log("length" in trees); // 返回true (length是一个数组属性)3. 式1.this 関数内では、this の値は関数の呼び出し方法によって異なります。厳密モードでは、this は実行コンテキストに入ったときにその値を保持するため、次の this はデフォルトで未定義になります
let simpleStr = "This is a simple string"; let myString = new String(); let newStr = new String("String created with constructor"); let myDate = new Date(); let myObj = {}; simpleStr instanceof String; // 返回 false, 检查原型链会找到 undefined myString instanceof String; // 返回 true newStr instanceof String; // 返回 true myString instanceof Object; // 返回 true myDate instanceof Date; // 返回 true myObj instanceof Object; // 返回 true, 尽管原型没有定义
function f2(){ "use strict"; // 这里是严格模式 return this; } f2() === undefined; // truef.bind(someObject) を呼び出すと、f と同じ関数本体とスコープを持つ関数が作成されますが、この新しい関数では、これは永続的にバインドされます関数の呼び出し方法に関係なく、bind の最初の引数に追加されます
function add(c, d) { return this.a + this.b + c + d; } let o = {a: 1, b: 3}; // 第一个参数是作为‘this’使用的对象 // 后续参数作为参数传递给函数调用 add.call(o, 5, 7); // 1 + 3 + 5 + 7 = 16アロー関数では、これは、それを囲む字句コンテキストの this と一致します。グローバルコードでは、グローバルオブジェクトとして設定されます
function f(){ return this.a; } let g = f.bind({a:"azerty"}); console.log(g()); // azerty let h = g.bind({a:'yoo'}); // bind只生效一次! console.log(h()); // azerty2.super 構文:
コンストラクターで使用する場合、super キーワードは単独で表示され、this キーワードを使用する前に使用する必要があります。 super キーワードは、親オブジェクトの関数を呼び出すためにも使用できます
let globalObject = this; let foo = (() => this); console.log(foo() === globalObject); // true3.newnew 演算子は、ユーザー定義のオブジェクト型のインスタンス、またはコンストラクターを使用して組み込みオブジェクトのインスタンスを作成します
class Human { constructor() {} static ping() { return 'ping'; } } class Computer extends Human { constructor() {} static pingpong() { return super.ping() + ' pong'; } } Computer.pingpong(); // 'ping pong'
関数呼び出し/配列の構築中に構文レベルで配列式または文字列を展開できます。また、リテラル オブジェクトを構築するときに、キーと値の用語でオブジェクト式を展開することもできます
関数呼び出し中に展開を使用しますfunction Car() {} car1 = new Car() console.log(car1.color) // undefined Car.prototype.color = null console.log(car1.color) // null car1.color = "black" console.log(car1.color) // blackE -USE拡張構文リテラルアレイを構築するとき、コピー
function myFunction(x, y, z) { }
let args = [0, 1, 2];
myFunction.apply(null, args);
//展开语法
function myFunction(x, y, z) { }
let args = [0, 1, 2];
myFunction(...args);
let parts = ['shoulders','knees'];
let lyrics = ['head',... parts,'and','toes'];
// ["head", "shoulders", "knees", "and", "toes"]
5を使用してクラスを定義します。関数式
function キーワードを使用して、式内で関数を定義することもできます。また、Function コンストラクターと関数宣言を使用して関数を定義することもできます 関数宣言のホイスティングと関数式のホイスティング
: JavaScript の関数式は使用できません。ホイストされているため、関数宣言とは異なり、関数を定義する前に関数式を使用することはできませんlet arr = [1, 2, 3]; let arr2 = [...arr]; // like arr.slice() arr2.push(4); // arr2 此时变成 [1, 2, 3, 4] // arr 不受影响7. function* 式function
let arr1 = [0, 1, 2]; let arr2 = [3, 4, 5]; // 将 arr2 中所有元素附加到 arr1 后面并返回 let arr3 = arr1.concat(arr2); //使用展开语法 let arr1 = [0, 1, 2]; let arr2 = [3, 4, 5]; let arr3 = [...arr1, ...arr2];
パラメータを受け取るlet Foo = class {
constructor() {}
bar() {
return "Hello World!";
}
};
let instance = new Foo();
instance.bar();
// "Hello World!"
/* 函数声明 */ foo(); // "bar" function foo() { console.log("bar"); } /* 函数表达式 */ baz(); // TypeError: baz is not a function let baz = function() { console.log("bar2"); };
式
function* idMaker(){ let index = 0; while(index<3) yield index++; } let gen = idMaker(); console.log(gen.next().value); // 0 console.log(gen.next().value); // 1 console.log(gen.next().value); // 2 console.log(gen.next().value); // undefined
関連する推奨事項:
JavaScript の演算子== ===
JavaScript コア言語 - 式と演算子を使用した _javascript スキルの紹介
以上がJavaScript の演算子と式の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。