ホームページ >ウェブフロントエンド >フロントエンドQ&A >es6で変数を宣言する方法は何ですか
変数を宣言する方法: 1. var コマンドを "var 変数名;" という構文で使用します; 2. function コマンドを使用します; 3. cosnt コマンドを "const 変数名;" という構文で使用します。 4. let コマンドを使用します (構文は "let 変数名" です); 5. import コマンドを使用します; 6. class コマンドを使用します。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
ES5 には変数を宣言する方法が 2 つしかありません。var
コマンドと function
コマンドです。
ES6 let
および const
コマンドの追加に加えて、変数を宣言するには 2 つの方法があります。 # コマンドと class
コマンド。
(1) var コマンドvar a ; //undefined
var b = 1;
function add(a) {
var sum = a + 1;
return sum;
}
は、add という名前の新しい変数を宣言し、それに関数定義を割り当てます。
#
const a; //报错,必须初始化 const b = 1;const で定義された変数は変更できないため、初期化する必要があります変数がグローバル変数、またはモジュール内のグローバル変数である
Constant は、スコープ内の他の変数または関数と同じ名前を持つことはできません
##(4) let コマンド
let a; //undefined let b = 1; function add(b) { let sum = b + 1; return sum; } let c = add(b);
「javascript strict モード」が必要: 'use strict';
変数のプロモーションはありません1. ES6 は独自のモジュール システムを導入しています。エクスポート経由でエクスポートし、インポート経由でインポートします。 2. CommonJS とは異なり、モジュールの参照を取得するだけで、実際に使用するまで値は取得されません。 3. たとえば、js の場合:
let student = [ { name: 'xiaoming', age: 21, }, { name: 'xiaohong', age: 18 } ] export default student; // 这种导出方式,你可以在import时指定它的名称。
4. app.js では、次のように使用できます:
import StudentList from './student.js'; //指定名称 console.log(StudentList[0].name); //xiaoming
(6 ) class コマンド
1: クラスは es6 の糖衣構文であり、実際には es5 で実装できます。 class Point {
constructor (x, y) {
this.x = x;
this.y = y;
}
toString () {
return this.x + ',' + this.y;
}
}
//上面是一个类
Object.assign(Point.prototype, {
getX () {
return this.x;
},
getY () {
return this.y;
}
})
let p1 = new Point(1,2);
console.log(p1.toString()); //1,2
console.log(p1.getX()); //1
console.log(p1.getY()); //2
console.log(Object.keys(Point.prototype)); // ["getX", "getY"]
メソッド間にカンマ区切りは必要ありません
constructor默认返回实例对象(this),完全可以指定返回其他的对象。
必须用new调用
不存在变量提升
当用一个变量去接受class时,可以省略classname
es6不提供私有方法。
2:使用extends继承
class ThreeDPoint extends Point { constructor (x, y, z) { console.log(new.target); //ThreeDPoint super(x, y); this.z = z; } toString () { return super.toString() + ',' + this.z; } static getInfo() { console.log('static method'); } get z() { return 4; } set z(value) { console.log(value); } } ThreeDPoint.getInfo(); // "static method" let ta = new ThreeDPoint(2,3,4); console.log(ta.toString()); //2,3,4 console.log(ta.z); // 4 ta.z = 200; // 200 console.log(Object.getPrototypeOf(ThreeDPoint)); //Point
constructor中必须调用super,因为子类中没有this,必须从父类中继承。
子类的__proto__属性总是指向父类
子类的prototype属性的__proto__总是指向父类的prototype
Object.getPrototypeOf()获取父类
super作为方法只能在constructor中
super作为属性指向父类的prototype.
在constructor中使用super.x = 2,实际上this.x = 2;但是读取super.x时,又变成了父类.prototype.x。
原生构造函数是无法继承的。
get set 方法可以对属性的赋值和读取进行拦截
(静态方法不能被实例继承。通过static声明
静态属性只能 ThreeDPoint.name = “123” 声明 (与static没什么关系)
【推荐学习:javascript高级教程】
以上がes6で変数を宣言する方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。