Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ES6ÐÂÌØÐÔ
 
  2629  次浏览      28
 2019-5-28  
 
±à¼­ÍƼö:
±¾ÎÄÀ´×Ô¼òÊ飬ECMAScript 6(ÒÔϼò³ÆES6)ÊÇJavaScriptÓïÑÔµÄÏÂÒ»´ú±ê×¼,ÒѾ­ÔÚ2015Äê6ÔÂÕýʽ·¢²¼ÁË¡£

ES6Óï·¨

Tags: javascript

[TOC]

const Óë let ±äÁ¿

ʹÓÃvar´øÀ´µÄÂé·³:

function getClothing(isCold) {
if (isCold) {
var freezing = 'Grab a jacket!';
} else {
var hot = 'It's a shorts kind of day.';
console.log(freezing);
}
}

 

ÔËÐÐgetClothing(false)ºóÊä³öµÄÊÇundefined,ÕâÊÇÒòΪִÐÐfunctionº¯Êý֮ǰ,ËùÓбäÁ¿¶¼»á±»ÌáÉý, ÌáÉýµ½º¯Êý×÷ÓÃÓò¶¥²¿.

letÓëconstÉùÃ÷µÄ±äÁ¿½â¾öÁËÕâÖÖÎÊÌâ,ÒòΪËûÃÇÊǿ鼶×÷ÓÃÓò, ÔÚ´úÂë¿é(ÓÃ{}±íʾ)ÖÐʹÓÃlet»òconstÉùÃ÷±äÁ¿, ¸Ã±äÁ¿»áÏÝÈëÔÝʱÐÔËÀÇøÖ±µ½¸Ã±äÁ¿µÄÉùÃ÷±»´¦Àí.

function getClothing(isCold) {
if (isCold) {
const freezing = 'Grab a jacket!';
} else {
const hot = 'It's a shorts kind of day.';
console.log(freezing);
}
}

 

ÔËÐÐgetClothing(false)ºóÊä³öµÄÊÇReferenceError: freezing is not defined,ÒòΪ freezing ûÓÐÔÚ else Óï¾ä¡¢º¯Êý×÷ÓÃÓò»òÈ«¾Ö×÷ÓÃÓòÄÚÉùÃ÷£¬ËùÒÔÅ׳ö ReferenceError¡£

¹ØÓÚʹÓÃletÓëconst¹æÔò:

ʹÓÃletÉùÃ÷µÄ±äÁ¿¿ÉÒÔÖØÐ¸³Öµ,µ«ÊDz»ÄÜÔÚͬһ×÷ÓÃÓòÄÚÖØÐÂÉùÃ÷

ʹÓÃconstÉùÃ÷µÄ±äÁ¿±ØÐ븳ֵ³õʼ»¯,µ«ÊDz»ÄÜÔÚͬһ×÷ÓÃÓòÀàÖØÐÂÉùÃ÷Ò²ÎÞ·¨ÖØÐ¸³Öµ.

Ä£°å×ÖÃæÁ¿

ÔÚES6֮ǰ,½«×Ö·û´®Á¬½Óµ½Ò»ÆðµÄ·½·¨ÊÇ+»òÕßconcat()·½·¨,Èç

const student = {
name: 'Richard Kalehoff',
guardian: 'Mr. Kalehoff'
};

const teacher = {
name: 'Mrs. Wilson',
room: 'N231'
}

let message = student.name + ' please see ' + teacher.name + ' in ' + teacher.room + ' to pick up your report card.';

 

Ä£°å×ÖÃæÁ¿±¾ÖÊÉÏÊǰüº¬Ç¶Èëʽ±í´ïʽµÄ×Ö·û´®×ÖÃæÁ¿.

Ä£°å×ÖÃæÁ¿Óõ¹ÒýºÅ ( `` )£¨¶ø²»Êǵ¥ÒýºÅ ( '' ) »òË«ÒýºÅ( "" )£©±íʾ£¬¿ÉÒÔ°üº¬Óà ${expression} ±íʾµÄռλ·û

let message = `${student.name} please see ${teacher.name} in ${teacher.room} to pick up your report card.`;

½â¹¹

ÔÚES6ÖÐ,¿ÉÒÔʹÓý⹹´ÓÊý×éºÍ¶ÔÏóÌáȡֵ²¢¸³Öµ¸ø¶ÀÌØµÄ±äÁ¿

½â¹¹Êý×éµÄÖµ:

const point = [10, 25, -34];
const [x, y, z] = point;
console.log(x, y, z);

Prints: 10 25 -34

[]±íʾ±»½â¹¹µÄÊý×é, x,y,z±íʾҪ½«Êý×éÖеÄÖµ´æ´¢ÔÚÆäÖеıäÁ¿, Ôڽ⹹Êý×éÊÇ, »¹¿ÉÒÔºöÂÔÖµ, ÀýÈçconst[x,,z]=point,ºöÂÔy×ø±ê.

½â¹¹¶ÔÏóÖеÄÖµ:

const gemstone = {
type: 'quartz',
color: 'rose',
karat: 21.29
};
const {type, color, karat} = gemstone;
console.log(type, color, karat);

 

»¨À¨ºÅ { } ±íʾ±»½â¹¹µÄ¶ÔÏó£¬type¡¢color ºÍ karat ±íʾҪ½«¶ÔÏóÖеÄÊôÐÔ´æ´¢µ½ÆäÖеıäÁ¿

¶ÔÏó×ÖÃæÁ¿¼òд·¨

let type = 'quartz';
let color = 'rose';
let carat = 21.29;
const gemstone = {
type: type,
color: color,
carat: carat
};


console.log(gemstone);

 

ʹÓúÍËù·ÖÅäµÄ±äÁ¿Ãû³ÆÏàͬµÄÃû³Æ³õʼ»¯¶ÔÏóʱÈç¹ûÊôÐÔÃû³ÆºÍËù·ÖÅäµÄ±äÁ¿Ãû³ÆÒ»Ñù£¬ÄÇô¾Í¿ÉÒÔ´Ó¶ÔÏóÊôÐÔÖÐɾµôÕâÐ©ÖØ¸´µÄ±äÁ¿Ãû³Æ¡£

let type = 'quartz';
let color = 'rose';
let carat = 21.29;
const gemstone = {type,color,carat};
console.log(gemstone);

 

¼òд·½·¨µÄÃû³Æ:

const gemstone = {
type,
color,
carat,
calculateWorth: function() {
// ½«¸ù¾ÝÀàÐÍ(type)£¬ÑÕÉ«(color)ºÍ¿ËÀ­(carat)¼ÆË㱦ʯ(gemstone)µÄ¼ÛÖµ
}
};

 

ÄäÃûº¯Êý±»·ÖÅ䏸ÊôÐÔ calculateWorth£¬µ«ÊÇÕæµÄÐèÒª function ¹Ø¼ü×ÖÂð£¿ÔÚ ES6 Öв»ÐèÒª£¡

let gemstone = {
type,
color,
carat,
calculateWorth() { ... }
};

for...ofÑ­»·

for...ofÑ­»·ÊÇ×îÐÂÌí¼Óµ½ JavaScript Ñ­»·ÏµÁÐÖеÄÑ­»·¡£

Ëü½áºÏÁËÆäÐÖµÜÑ­»·ÐÎʽ for Ñ­»·ºÍ for...in Ñ­»·µÄÓÅÊÆ£¬¿ÉÒÔÑ­»·Èκοɵü´ú£¨Ò²¾ÍÊÇ×ñÊØ¿Éµü´úЭÒ飩ÀàÐ͵ÄÊý¾Ý¡£Ä¬ÈÏÇé¿öÏ£¬°üº¬ÒÔÏÂÊý¾ÝÀàÐÍ£ºString¡¢Array¡¢Map ºÍ Set£¬×¢Òâ²»°üº¬ Object Êý¾ÝÀàÐÍ£¨¼´ {}£©¡£Ä¬ÈÏÇé¿öÏ£¬¶ÔÏ󲻿ɵü´ú¡£

forÑ­»·

const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (let i = 0; i < digits.length; i++) {
console.log(digits[i]);
}

 

for Ñ­»·µÄ×î´óȱµãÊÇÐèÒª¸ú×Ù¼ÆÊýÆ÷ºÍÍ˳öÌõ¼þ¡£

ËäÈ» for Ñ­»·ÔÚÑ­»·Êý×éʱµÄÈ·¾ßÓÐÓÅÊÆ£¬µ«ÊÇijЩÊý¾Ý½á¹¹²»ÊÇÊý×飬Òò´Ë²¢·ÇʼÖÕÊʺÏʹÓà loop Ñ­»·¡£

for...inÑ­»·

const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

for (const index in digits) {
console.log(digits[index]);
}

 

ҪʹÓà index À´·ÃÎÊÊý×éµÄÖµ

µ±ÄãÐèÒªÏòÊý×éÖÐÌí¼Ó¶îÍâµÄ·½·¨£¨»òÁíÒ»¸ö¶ÔÏó£©Ê±£¬for...in Ñ­»·»á´øÀ´ºÜ´óµÄÂé·³¡£ÒòΪ for...in Ñ­»·Ñ­»··ÃÎÊËùÓпÉö¾ÙµÄÊôÐÔ£¬Òâζ×ÅÈç¹ûÏòÊý×éµÄÔ­ÐÍÖÐÌí¼ÓÈÎºÎÆäËûÊôÐÔ£¬ÕâЩÊôÐÔÒ²»á³öÏÖÔÚÑ­»·ÖС£

Array.prototype.decimalfy = function() {
for (let i = 0; i < this.length; i++) {
this[i] = this[i].toFixed(2);
}
};
const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];


for (const index in digits) {
console.log(digits[index]);
}

forEach Ñ­»· ÊÇÁíÒ»ÖÖÐÎʽµÄ JavaScript Ñ­»·¡£µ«ÊÇ£¬forEach() ʵ¼ÊÉÏÊÇÊý×é·½·¨£¬Òò´ËÖ»ÄÜÓÃÔÚÊý×éÖС£Ò²ÎÞ·¨Í£Ö¹»òÍ˳ö forEach Ñ­»·¡£Èç¹ûÏ£ÍûÄãµÄÑ­»·ÖгöÏÖÕâÖÖÐÐΪ£¬ÔòÐèҪʹÓûù±¾µÄ for Ñ­»·¡£

for...ofÑ­»·

for...of Ñ­»·ÓÃÓÚÑ­»··ÃÎÊÈκοɵü´úµÄÊý¾ÝÀàÐÍ¡£

for...of Ñ­»·µÄ±àд·½Ê½ºÍ for...in Ñ­»·µÄ»ù±¾Ò»Ñù£¬Ö»Êǽ« in Ìæ»»Îª of£¬¿ÉÒÔºöÂÔË÷Òý¡£

const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
for (const digit of digits) {
console.log(digit);
}

 

½¨ÒéʹÓø´Êý¶ÔÏóÃû³ÆÀ´±íʾ¶à¸öÖµµÄ¼¯ºÏ¡£ÕâÑù£¬Ñ­»·¸Ã¼¯ºÏʱ£¬¿ÉÒÔʹÓÃÃû³ÆµÄµ¥Êý°æ±¾À´±íʾ¼¯ºÏÖеĵ¥¸öÖµ¡£ÀýÈ磬for (const button of buttons) {¡­}¡£

for...of Ñ­»·»¹¾ßÓÐÆäËûÓÅÊÆ£¬½â¾öÁË for ºÍ for...in Ñ­»·µÄ²»×ãÖ®´¦¡£Äã¿ÉÒÔËæÊ±Í£Ö¹»òÍ˳ö for...of Ñ­»·¡£

for (const digit of digits) {
if (digit % 2 === 0) {
continue;
}
console.log(digit);
}

 

²»Óõ£ÐÄÏò¶ÔÏóÖÐÌí¼ÓеÄÊôÐÔ¡£for...of Ñ­»·½«Ö»Ñ­»··ÃÎʶÔÏóÖеÄÖµ¡£

Array.prototype.decimalfy = function() {
for (i = 0; i < this.length; i++) {
this[i] = this[i].toFixed(2);
}
};

const digits = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

for (const digit of digits) {
console.log(digit);
}

Õ¹¿ªÔËËã·û

Õ¹¿ªÔËËã·û£¨ÓÃÈý¸öÁ¬ÐøµÄµã (...) ±íʾ£©ÊÇ ES6 ÖеÄиÅÄʹÄãÄܹ»½«×ÖÃæÁ¿¶ÔÏóÕ¹¿ªÎª¶à¸öÔªËØ

const books = ["Don Quixote", "The Hobbit", "Alice in Wonderland", "Tale of Two Cities"];
console.log(...books);

 

Õ¹¿ªÔËËã·ûµÄÒ»¸öÓÃ;ÊǽáºÏÊý×é¡£

Èç¹ûÄãÐèÒª½áºÏ¶à¸öÊý×飬ÔÚÓÐÕ¹¿ªÔËËã·û֮ǰ£¬±ØÐëʹÓà ArrayµÄ concat() ·½·¨¡£

const fruits = ["apples", "bananas", "pears"];
const vegetables = ["corn", "potatoes", "carrots"];
const produce = fruits.concat(vegetables);
console.log(produce);

 

ʹÓÃÕ¹¿ª·ûÀ´½áºÏÊý×é

const fruits = ["apples", "bananas", "pears"];
const vegetables = ["corn", "potatoes", "carrots"];
const produce = [...fruits,...vegetables];
console.log(produce);

Ê£Óà²ÎÊý(¿É±ä²ÎÊý)

ʹÓÃÕ¹¿ªÔËËã·û½«Êý×éÕ¹¿ªÎª¶à¸öÔªËØ, ʹÓÃÊ£Óà²ÎÊý¿ÉÒÔ½«¶à¸öÔªËØ°ó¶¨µ½Ò»¸öÊý×éÖÐ.

Ê£Óà²ÎÊýÒ²ÓÃÈý¸öÁ¬ÐøµÄµã ( ... ) ±íʾ£¬Ê¹ÄãÄܹ»½«²»¶¨ÊýÁ¿µÄÔªËØ±íʾΪÊý×é.

ÓÃ;1: ½«±äÁ¿¸³Êý×éֵʱ:

const order = [20.17, 18.67, 1.50, "cheese", "eggs", "milk", "bread"];
const [total, subtotal, tax, ...items] = order;
console.log(total, subtotal, tax, items);

 

ÓÃ;2: ¿É±ä²ÎÊýº¯Êý

¶ÔÓÚ²ÎÊý²»¹Ì¶¨µÄº¯Êý,ES6֮ǰÊÇʹÓòÎÊý¶ÔÏó(arguments)´¦Àí:

function sum() {
let total = 0;
for(const argument of arguments) {
total += argument;
}
return total;
}

ÔÚES6ÖÐʹÓÃÊ£Óà²ÎÊýÔËËã·ûÔò¸üΪ¼ò½à,¿É¶ÁÐÔÌá¸ß:

function sum(...nums) {
let total = 0;
for(const num of nums) {
total += num;
}
return total;
}

ES6¼ýÍ·º¯Êý

ES6֮ǰ,ʹÓÃÆÕͨº¯Êý°ÑÆäÖÐÿ¸öÃû×Öת»»Îª´óдÐÎʽ£º

const upperizedNames = ['Farrin', 'Kagure', 'Asser'].map(function(name) {
return name.toUpperCase();
});

 

¼ýÍ·º¯Êý±íʾ:

const upperizedNames = ['Farrin', 'Kagure', 'Asser'].map(
name => name.toUpperCase()
);

 

ÆÕͨº¯Êý¿ÉÒÔÊǺ¯ÊýÉùÃ÷»òÕߺ¯Êý±í´ïʽ, µ«ÊǼýÍ·º¯ÊýʼÖÕ¶¼ÊDZí´ïʽ, È«³ÌÊǼýÍ·º¯Êý±í´ïʽ, Òò´ËÒò´Ë½öÔÚ±í´ïʽÓÐЧʱ²ÅÄÜʹÓ㬰üÀ¨£º

´æ´¢ÔÚ±äÁ¿ÖУ¬

µ±×ö²ÎÊý´«µÝ¸øº¯Êý£¬

´æ´¢ÔÚ¶ÔÏóµÄÊôÐÔÖС£

const greet = name => `Hello ${name}!`;

 

¿ÉÒÔÈçϵ÷ÓÃ:

greet('Asser');

 

Èç¹ûº¯ÊýµÄ²ÎÊýÖ»ÓÐÒ»¸ö,²»ÐèҪʹÓÃ()°üÆðÀ´,µ«ÊÇÖ»ÓÐÒ»¸ö»òÕß¶à¸ö, Ôò±ØÐëÐèÒª½«²ÎÊýÁбí·ÅÔÚÔ²À¨ºÅÄÚ:

// ¿Õ²ÎÊýÁбíÐèÒªÀ¨ºÅ
const sayHi = () => console.log('Hello Udacity Student!');

// ¶à¸ö²ÎÊýÐèÒªÀ¨ºÅ
const orderIceCream = (flavor, cone) => console.log(`Here's your ${flavor} ice cream in a ${cone} cone.`);
orderIceCream('chocolate', 'waffle');

Ò»°ã¼ýÍ·º¯Êý¶¼Ö»ÓÐÒ»¸ö±í´ïʽ×÷Ϊº¯ÊýÖ÷Ìâ:

const upperizedNames = ['Farrin', 'Kagure', 'Asser'].map(
name => name.toUpperCase()
);

ÕâÖÖº¯Êý±í´ïʽÐÎʽ³ÆÎª¼òдÖ÷ÌåÓï·¨:

ÔÚº¯ÊýÖ÷ÌåÖÜΧûÓл¨À¨ºÅ,

×Ô¶¯·µ»Ø±í´ïʽ

µ«ÊÇÈç¹û¼ýÍ·º¯ÊýµÄÖ÷ÌåÄÚÐèÒª¶àÐдúÂë, ÔòÐèҪʹÓ󣹿Ö÷ÌåÓï·¨:

Ëü½«º¯ÊýÖ÷Ìå·ÅÔÚ»¨À¨ºÅÄÚ

ÐèҪʹÓà return Óï¾äÀ´·µ»ØÄÚÈÝ¡£

const upperizedNames = ['Farrin', 'Kagure', 'Asser'].map( name => {
name = name.toUpperCase();
return `${name} has ${name.length} characters in their name`;
});

javascript±ê×¼º¯Êýthis

new ¶ÔÏó

const mySundae = new Sundae('Chocolate', ['Sprinkles', 'Hot Fudge']);

sundaeÕâ¸ö¹¹Ô캯ÊýÄÚµÄthisµÄÖµÊÇʵÀý¶ÔÏó, ÒòΪËûʹÓÃnew±»µ÷ÓÃ.

Ö¸¶¨µÄ¶ÔÏó

const result = obj1.printName.call(obj2);

º¯ÊýʹÓÃcall/apply±»µ÷ÓÃ,thisµÄÖµÖ¸ÏòÖ¸¶¨µÄobj2,ÒòΪcall()µÚÒ»¸ö²ÎÊýÃ÷È·ÉèÖÃthisµÄÖ¸Ïò

ÉÏÏÂ`ÎĶÔÏó

data.teleport();

 

º¯ÊýÊǶÔÏóµÄ·½·¨, thisÖ¸Ïò¾ÍÊÇÄǸö¶ÔÏó,´Ë´¦this¾ÍÊÇÖ¸Ïòdata.

È«¾Ö¶ÔÏó»ò undefined

teleport();

´Ë´¦ÊÇthisÖ¸ÏòÈ«¾Ö¶ÔÏó,ÔÚÑϸñģʽÏÂ,Ö¸Ïòundefined.

javascriptÖÐthisÊǺܸ´ÔӵĸÅÄî, ÒªÏêϸÅжÏthis,Çë²Î¿¼this»íÈ»¿ªÀÊ

¼ýÍ·º¯ÊýºÍthis

¶ÔÓÚÆÕͨº¯Êý, thisµÄÖµ»ùÓÚº¯ÊýÈçºÎ±»µ÷ÓÃ, ¶ÔÓÚ¼ýÍ·º¯Êý,thisµÄÖµ»ùÓÚº¯ÊýÖÜΧµÄÉÏÏÂÎÄ, »»¾ä»°Ëµ,thisµÄÖµºÍº¯ÊýÍâÃæµÄthisµÄÖµÊÇÒ»ÑùµÄ.

function IceCream() {
this.scoops = 0;
}
// Ϊ IceCream Ìí¼Ó addScoop ·½·¨
IceCream.prototype.addScoop = function() {
setTimeout(function() {
this.scoops++;
console.log('scoop added!');
console.log(this.scoops); // undefined+1=NaN
console.log(dessert.scoops); //0
}, 500);
};



----------
±êÌâ
const dessert = new IceCream();
dessert.addScoop();

´«µÝ¸ø setTimeout() µÄº¯Êý±»µ÷ÓÃʱûÓõ½ new¡¢call() »ò apply()£¬Ò²Ã»Óõ½ÉÏÏÂÎĶÔÏó¡£Òâζן¯ÊýÄÚµÄ this µÄÖµÊÇÈ«¾Ö¶ÔÏ󣬲»ÊÇ dessert ¶ÔÏó¡£Êµ¼ÊÉÏ·¢ÉúµÄÇé¿öÊÇ£¬´´½¨ÁËÐ嵀 scoops ±äÁ¿£¨Ä¬ÈÏֵΪ undefined£©£¬È»ºóµÝÔö£¨undefined + 1 ½á¹ûΪ NaN£©;

½â¾ö´ËÎÊÌâµÄ·½Ê½Ö®Ò»ÊÇʹÓñհü(closure):

// ¹¹Ô캯Êý
function IceCream() {
this.scoops = 0;
}
// Ϊ IceCream Ìí¼Ó addScoop ·½·¨
IceCream.prototype.addScoop = function() {
const cone = this; // ÉèÖà `this` ¸ø `cone`±äÁ¿
setTimeout(function() {
cone.scoops++; // ÒýÓÃ`cone`±äÁ¿
console.log('scoop added!');
console.log(dessert.scoops);//1
}, 0.5);
};
const dessert = new IceCream();
dessert.addScoop();

¼ýÍ·º¯ÊýµÄ×÷ÓÃÕýÊÇÈç´Ë, ½«setTimeOut()µÄº¯Êý¸ÄΪ¼ôÍ·º¯Êý:

// ¹¹Ô캯Êý
function IceCream() {
this.scoops = 0;
}
// Ϊ IceCream Ìí¼Ó addScoop ·½·¨
IceCream.prototype.addScoop = function() {
setTimeout(() => { // Ò»¸ö¼ýÍ·º¯Êý±»´«µÝ¸øsetTimeout
this.scoops++;
console.log('scoop added!');
console.log(dessert.scoops);//1
}, 0.5);
};
const dessert = new IceCream();
dessert.addScoop();

ĬÈϲÎÊýº¯Êý

function greet(name, greeting) {
name = (typeof name !== 'undefined') ? name : 'Student';
greeting = (typeof greeting !== 'undefined') ? greeting : 'Welcome';
return `${greeting} ${name}!`;
}


greet(); // Welcome Student!
greet('James'); // Welcome James!
greet('Richard', 'Howdy'); // Howdy Richard!

greet() º¯ÊýÖлìÂÒµÄǰÁ½ÐеÄ×÷ÓÃÊÇʲô£¿ËüÃǵÄ×÷ÓÃÊǵ±ËùÐèµÄ²ÎÊýδÌṩʱ£¬Îªº¯ÊýÌṩĬÈϵÄÖµ¡£µ«ÊÇ¿´ÆðÀ´ºÜÂé·³, ES6ÒýÈëÒ»ÖÖеķ½Ê½´´½¨Ä¬ÈÏÖµ, Ëû½ÐĬÈϺ¯Êý²ÎÊý:

function greet(name = 'Student', greeting = 'Welcome') {
return `${greeting} ${name}!`;
}
greet(); // Welcome Student!
greet('James'); // Welcome James!
greet('Richard', 'Howdy'); // Howdy Richard!

ĬÈÏÖµÓë½â¹¹

ĬÈÏÖµÓë½â¹¹Êý×é

function createGrid([width = 5, height = 5]) {
return `Generates a ${width} x ${height} grid`;
}
createGrid([]); // Generates a 5 x 5 grid
createGrid([2]); // Generates a 2 x 5 grid
createGrid([2, 3]); // Generates a 2 x 3 grid
createGrid([undefined, 3]); // Generates a 5 x 3 grid

createGrid() º¯ÊýÔ¤ÆÚ´«ÈëµÄÊÇÊý×é¡£Ëüͨ¹ý½â¹¹½«Êý×éÖеĵÚÒ»ÏîÉèΪ width£¬µÚ¶þÏîÉèΪ height¡£Èç¹ûÊý×éΪ¿Õ£¬»òÕßÖ»ÓÐÒ»ÏÄÇô¾Í»áʹÓÃĬÈϲÎÊý£¬²¢½«È±Ê§µÄ²ÎÊýÉèΪĬÈÏÖµ 5¡£

µ«ÊÇ´æÔÚÒ»¸öÎÊÌâ:

createGrid(); // throws an error

Uncaught TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined

³öÏÖ´íÎó£¬ÒòΪ createGrid() Ô¤ÆÚ´«ÈëµÄÊÇÊý×飬Ȼºó¶ÔÆä½øÐн⹹¡£ÒòΪº¯Êý±»µ÷ÓÃʱûÓд«ÈëÊý×飬ËùÒÔ³öÏÖÎÊÌâ¡£µ«ÊÇ£¬ÎÒÃÇ¿ÉÒÔʹÓÃĬÈϵĺ¯Êý²ÎÊý£¡

function createGrid([width = 5, height = 5] = []) {
return `Generating a grid of ${width} by ${height}`;
}
createGrid(); // Generates a 5 x 5 grid

Returns: Generates a 5 x 5 grid

ĬÈÏÖµÓë½â¹¹º¯Êý

¾ÍÏñʹÓÃÊý×éĬÈÏÖµ½â¹¹Êý×éÒ»Ñù£¬º¯Êý¿ÉÒÔÈöÔÏó³ÉΪһ¸öĬÈϲÎÊý£¬²¢Ê¹ÓöÔÏó½â¹¹£º

function createSundae({scoops = 1, toppings = ['Hot Fudge']}={}) {
const scoopText = scoops === 1 ? 'scoop' : 'scoops';
return `Your sundae has ${scoops} ${scoopText} with ${toppings.join(' and ')} toppings.`;
}
createSundae({}); // Your sundae has 1 scoop with Hot Fudge toppings.
createSundae({scoops: 2}); // Your sundae has 2 scoops with Hot Fudge toppings.
createSundae({scoops: 2, toppings: ['Sprinkles']}); // Your sundae has 2 scoops with Sprinkles toppings.
createSundae({toppings: ['Cookie Dough']}); // Your sundae has 1 scoop with Cookie Dough toppings.
createSundae(); // Your sundae has 1 scoop with Hot Fudge toppings.

3.Êý×éĬÈÏÖµÓë¶ÔÏóĬÈÏÖµ

ĬÈϺ¯Êý²ÎÊýÖ»ÊǸö¼òµ¥µÄÌí¼ÓÄÚÈÝ£¬µ«ÊÇÈ´´øÀ´ºÜ¶à±ãÀû£¡ÓëÊý×éĬÈÏÖµÏà±È£¬¶ÔÏóĬÈÏÖµ¾ß±¸µÄÒ»¸öÓÅÊÆÊÇÄܹ»´¦ÀíÌø¹ýµÄÑ¡Ïî¡£¿´¿´ÏÂÃæµÄ´úÂ룺

function createSundae({scoops = 1, toppings = ['Hot Fudge']} = {}) { ¡­ }

ÔÚ createSundae() º¯ÊýʹÓöÔÏóĬÈÏÖµ½øÐн⹹ʱ£¬Èç¹ûÄãÏëʹÓà scoops µÄĬÈÏÖµ£¬µ«ÊǸü¸Ä toppings£¬ÄÇôֻÐèʹÓà toppings ´«ÈëÒ»¸ö¶ÔÏó£º

createSundae({toppings: ['Hot Fudge', 'Sprinkles', 'Caramel']});

½«ÉÏÊöʾÀýÓëʹÓÃÊý×éĬÈÏÖµ½øÐн⹹µÄͬһº¯ÊýÏà¶Ô±È¡£

function createSundae([scoops = 1, toppings = ['Hot Fudge']] = []) { ¡­ }

¶ÔÓÚÕâ¸öº¯Êý£¬Èç¹ûÏëʹÓà scoops µÄĬÈÏÊýÁ¿£¬µ«ÊǸü¸Ä toppings£¬Ôò±ØÐëÒÔÕâÖÖÆæ¹ÖµÄ·½Ê½µ÷ÓÃÄãµÄº¯Êý£º

createSundae([undefined, ['Hot Fudge', 'Sprinkles', 'Caramel']]);

ÒòΪÊý×éÊÇ»ùÓÚλÖõģ¬ÎÒÃÇÐèÒª´«Èë undefined ÒÔÌø¹ýµÚÒ»¸ö²ÎÊý£¨²¢Ê¹ÓÃĬÈÏÖµ£©À´µ½´ïµÚ¶þ¸ö²ÎÊý¡£

JavascriptÀà

ES5´´½¨Àà:

function Plane(numEngines) {
this.numEngines = numEngines;
this.enginesActive = false;
}

// ÓÉËùÓÐʵÀý "¼Ì³Ð" µÄ·½·¨
Plane.prototype.startEngines = function () {
console.log('starting engines...');
this.enginesActive = true;
};

ES6ÀàÖ»ÊÇÒ»¸öÓï·¨ÌÇ,Ô­ÐͼÌÐøÊµ¼ÊÉÏÔڵײãÒþ²ØÆðÀ´, Ó봫ͳÀà»úÖÆÓïÑÔÓÐÐ©Çø±ð.

class Plane {
//constructor·½·¨ËäÈ»ÔÚÀàÖÐ,µ«²»ÊÇÔ­ÐÍÉϵķ½·¨,Ö»ÊÇÓÃÀ´Éú³ÉʵÀýµÄ.
constructor(numEngines) {
this.numEngines = numEngines;
this.enginesActive = false;
}
//Ô­ÐÍÉϵķ½·¨, ÓÉËùÓÐʵÀý¶ÔÏó¹²Ïí.
startEngines() {
console.log('starting engines¡­');
this.enginesActive = true;
}
}

console.log(typeof Plane); //function

javascriptÖÐÀàÆäʵֻÊÇfunction, ·½·¨Ö®¼ä²»ÄÜʹÓÃ,,²»ÓöººÅÇø·ÖÊôÐԺͷ½·¨.

¾²Ì¬·½·¨

ÒªÌí¼Ó¾²Ì¬·½·¨£¬ÇëÔÚ·½·¨Ãû³ÆÇ°Ãæ¼ÓÉϹؼü×Ö static

class Plane {
constructor(numEngines) {
this.numEngines = numEngines;
this.enginesActive = false;
}
static badWeather(planes) {
for (plane of planes) {
plane.enginesActive = false;
}
}
startEngines() {
console.log('starting engines¡­');
this.enginesActive = true;
}
}

¹Ø¼ü×Öclass´øÀ´ÆäËû»ùÓÚÀàµÄÓïÑԵĺܶà˼Ïë,µ«ÊÇûÓÐÏòjavascriptÖÐÌí¼Ó´Ë¹¦ÄÜ

javascriptÀàʵ¼ÊÉÏ»¹ÊÇÔ­Ðͼ̳Ð

´´½¨javascriptÀàµÄÐÂʵÀýʱ±ØÐëʹÓÃnew¹Ø¼ü×Ö

super ºÍ extends

ʹÓÃеÄsuperºÍextends¹Ø¼ü×ÖÀ©Õ¹Àà:

class Tree {
constructor(size = '10', leaves = {spring: 'green', summer: 'green', fall: 'orange', winter: null}) {
this.size = size;
this.leaves = leaves;
this.leafColor = null;
}

changeSeason(season) {
this.leafColor = this.leaves[season];
if (season === 'spring') {
this.size += 1;
}
}
}

class Maple extends Tree {
constructor(syrupQty = 15, size, leaves) {
super(size, leaves); //superÓÃ×÷º¯Êý
this.syrupQty = syrupQty;
}

changeSeason(season) {
super.changeSeason(season);//superÓÃ×÷¶ÔÏó
if (season === 'spring') {
this.syrupQty += 1;
}
}

gatherSyrup() {
this.syrupQty -= 3;
}
}

ʹÓÃES5±àдͬÑù¹¦ÄܵÄÀà:

function Tree(size, leaves) {
this.size = size || 10;
this.leaves = leaves || {spring: 'green', summer: 'green', fall: 'orange', winter: null};
this.leafColor;
}

Tree.prototype.changeSeason = function(season) {
this.leafColor = this.leaves[season];
if (season === 'spring') {
this.size += 1;
}
}

function Maple (syrupQty, size, leaves) {
Tree.call(this, size, leaves);
this.syrupQty = syrupQty || 15;
}

Maple.prototype = Object.create(Tree.prototype);
Maple.prototype.constructor = Maple;

Maple.prototype.changeSeason = function(season) {
Tree.prototype.changeSeason.call(this, season);
if (season === 'spring') {
this.syrupQty += 1;
}
}

Maple.prototype.gatherSyrup = function() {
this.syrupQty -= 3;
}

 

super ±ØÐëÔÚ this ֮ǰ±»µ÷ÓÃ

ÔÚ×ÓÀ๹Ô캯ÊýÖУ¬ÔÚʹÓà this ֮ǰ£¬±ØÐëÏȵ÷Ó󬼶Àà¡£

class Apple {}
class GrannySmith extends Apple {
constructor(tartnessLevel, energy) {
this.tartnessLevel = tartnessLevel; // ÔÚ 'super' ֮ǰ»áÅ׳öÒ»¸ö´íÎó£¡
super(energy);
}
}

   
2629 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì