iT邦幫忙

0

【JavaScript】object中不用分號(:)就可直接定義function的用法叫什麼?

hkk 2018-07-26 17:24:25844 瀏覽

各位大大好,我學習時看到類似下面那種把函數存於物件卻不用分號的寫法:

export var ET = {
    age: age,
    IQ: 180,
    sayHi() {console.log('hi');},
    ...
}

一般都是要寫成下面這樣吧?

sayhi: functin (){}

我想知道那種不用分號的寫法在官方文件上或者是網路上哪裡有介紹,但是查了一下查不太到,不知道要用什麼關鍵字找,請知道的大大不吝指教,謝謝!
(原分類寫為TypeScript,現已更正)

Homura iT邦高手 1 級 ‧ 2018-07-26 17:51:20 檢舉
這個js好像也行耶.....
weiclin iT邦高手 4 級 ‧ 2018-07-26 18:03:11 檢舉
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions
哎呀晚了一步, 有人回了
hkk iT邦新手 5 級 ‧ 2018-07-26 18:32:39 檢舉
看來是JS的語法!
另外樓上謝謝,完全就是我問的case!

2 個回答

7
黃升煌 Mike
iT邦新手 4 級 ‧ 2018-07-26 18:00:40
最佳解答

這是 ES2015 的新語法 (ES2015還算新嗎...?)

名為: Property Shorthand

http://es6-features.org/#PropertyShorthand

有變數可以用時, 直接用變數就可以當屬性名稱

所以上面程式在建立物件時可以更加簡短

const sayHi = () => {console.log('hi');};
const age = 18;

export var ET = {
    age,
    IQ: 180,
    sayHi
}
hkk iT邦新手 5 級 ‧ 2018-07-26 18:48:07 檢舉

必須說,您的case是針對本來已定義名字的變數或函數所言的,跟我的問題有點不太一樣(您分享的連結該分類下的第三項就是我的問題了),但依然獲益良多,謝謝您的說明!

必須說,其實是一樣的,只是 sayHi() 方法名稱宣告在哪裡而已,而這個觀念不論在變數還是方法都是一樣的。不過無論如何,對你有幫助最重要 :)

0
fuzzylee1688
iT邦新手 2 級 ‧ 2018-07-27 09:01:40

感覺得和傳統 C/C++, java語言 -變數/函式定義 嚴謹方式差很多, 會讓很多程式師看不懂.. 這真的是以後設計語言趨向?

看更多先前的回應...收起先前的回應...
Homura iT邦高手 1 級 ‧ 2018-07-27 09:21:59 檢舉

其實這算是JS的特色??

fillano iT邦超人 1 級 ‧ 2018-07-27 11:43:58 檢舉

即使沒這個,他也一向不嚴謹XD

javascript就是一種不嚴謹,但又不得不使用的語言。
這樣的用法,美其名叫萬用型用法。
實際上也是萬「洞」型的做法。

但...你又不能不用它。所以,認了吧。

froce iT邦大師 3 級 ‧ 2018-07-27 23:25:37 檢舉

沒web前端開發需求,我才不想學JS咧,雷一堆就算了,相容性和各種版本的語法...Orz

我要發表回答

立即登入回答