Dart基礎(chǔ)知識(shí)

程序入口

JavaScript沒(méi)有預(yù)定義的入口函數(shù)闻妓,但在Dart中由缆,每個(gè)app都必須有一個(gè)頂級(jí)的main ()函數(shù)作為應(yīng)用程序的入口點(diǎn)(這個(gè)跟java很類似)是晨。

//Dart 
main() {}

控制臺(tái)輸出

要在Dart中打印到控制臺(tái)署鸡,可使用print :

// JavaScript
console.log("Hello world!"); 
//Dart
print('Hello world!');

變量

Dart是類型安全的 - 它使用靜態(tài)類型檢查和運(yùn)時(shí)的組合,檢查以確保變量的值始終與變量的靜態(tài)值匹配類型炉抒。 盡管類型是必需的拿诸,但某些類型注釋是可選的亩码,因?yàn)镈art會(huì)執(zhí)行類型推斷。

// JavaScript
var name = "DavaScript";
//Dart
String name = 'dart'; // Explicitly typed as a string, 
var otherName = 'Dart'; // Inferred string.

在JavaScript中吏廉,未初始化的變量是undefined;在Dart中,未初始化的變畺的初始值為null佩伤。
注意:數(shù)宇在Dart中也被當(dāng)成對(duì)象,所以只要是帶有數(shù)宇類型的末初始化變畺的值都是“null”障斋。

// JavaScript
van name; // == undefined
// Dart
van name; // == null

檢查null或零

在JavaScript中邀层,1或任何非null對(duì)象的值被視為true

// JavaScript 
van myNull = null; 
if (SmyNull) {
console.log{"null is treated as false.’) 劲赠;
}
van zero = 0; 
if (!zeno) {
console.log(M0 is treated as false");

在Dart中,只有布爾值“true”被視為true塑煎。

//Dart
var myNull = null; 
if (myNull == null) {
print('use "== null" to check null');
}
var zero = 0; 
if (zero == 0) {
print('use "== 0" to check zero');

Dart null檢查最佳實(shí)踐

從Dart 1.12開(kāi)始讯赏,null-aware運(yùn)算符可用幫助我們做null檢查:

bool isConnected(a, b) {
    bool outConn = outgoing[a]?.contains(b) ?? false; 
    bool inConn = incoming[a]?.contains(b) ?? false; 
    return outConn || inConn;
}

?. 運(yùn)算符在左邊為null的情況下會(huì)阻斷右邊的調(diào)用,?怜庸?運(yùn)算符主要作用是在左側(cè)表達(dá)式為null時(shí)為其設(shè)置默認(rèn)值。
對(duì)于表達(dá)式:

outgoing[a]?.contains(b)

可以計(jì)算下面結(jié)果

print(null ?? false);
print(false ?? 11);
print(true ?? false);

Functions

// JavaScript ES6 
function fn() { 
    return true;
}
//Dart 
fn() {
    return true;
}
// can also be written as 
bool fn() { 
    return true;
}

異步編程

Futures

與JavaScript一樣,Dart支持單線程執(zhí)行。在javaScript中 Promise 對(duì)象表示異步操作的最終完成或者失敗及其結(jié)果值抚芦。Dart使用Future表示異步操作:

// JavaScript
_getIPAddress = () =>{
    const url = "https://httpbin.org/ip";
    return fetch()
    .then(response => response.json())
    .then(responseJson => {
        console.log(responseJson.origin);
    })
    .catch(error => {
        console.error(error);
    });
};
// Dart
_getIPAddress() {
    final url = "https://httpbin.org/ip";
    HttpRequest.request(url).then((value){
        print(json.decode(value.responseText)['origin'])
    }).catchError((error) => pront(error));
}

async和await

async 函數(shù)聲明定義了一個(gè)異步函數(shù)褥民。
在 JavaScript 中消返,async函數(shù)返回一個(gè)Promise。 await 運(yùn)算符是用來(lái)等待 Promise:

// JavaScript
_getIPAddress = () =>{
    const url = "https://httpbin.org/ip";
    const response = await fetch(url);
    const json = await response.json();
    const data = await json.origin;
    console.log(data);
};

在Dart,async 函數(shù)返回一個(gè)Future译隘,函數(shù)的主題是稍后執(zhí)行题篷。await運(yùn)算符用于等待Future:

// Dart
_getIPAddress() {
    final url = "https://httpbin.org/ip";
    var request = await HttpRequest.request(url);
    String ip = json.decode(request.responseText)['origin'];
    print(ip);
}

參考鏈接 :Dart中文網(wǎng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葫笼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子洋丐,更是在濱河造成了極大的恐慌肝劲,老刑警劉巖掷漱,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件育特,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡怀薛,警方通過(guò)查閱死者的電腦和手機(jī)枝恋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門创倔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人焚碌,你說(shuō)我怎么就攤上這事畦攘。” “怎么了十电?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵知押,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我鹃骂,道長(zhǎng)台盯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任畏线,我火速辦了婚禮静盅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘寝殴。我一直安慰自己温亲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布杯矩。 她就那樣靜靜地躺著栈虚,像睡著了一般。 火紅的嫁衣襯著肌膚如雪史隆。 梳的紋絲不亂的頭發(fā)上魂务,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音泌射,去河邊找鬼粘姜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛熔酷,可吹牛的內(nèi)容都是我干的孤紧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拒秘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼号显!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起躺酒,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤押蚤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后羹应,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體揽碘,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雳刺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片劫灶。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖掖桦,靈堂內(nèi)的尸體忽然破棺而出浑此,到底是詐尸還是另有隱情,我是刑警寧澤滞详,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布凛俱,位于F島的核電站,受9級(jí)特大地震影響料饥,放射性物質(zhì)發(fā)生泄漏蒲犬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一岸啡、第九天 我趴在偏房一處隱蔽的房頂上張望原叮。 院中可真熱鬧,春花似錦巡蘸、人聲如沸奋隶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)唯欣。三九已至,卻和暖如春搬味,著一層夾襖步出監(jiān)牢的瞬間境氢,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工碰纬, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留萍聊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓悦析,卻偏偏與公主長(zhǎng)得像寿桨,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子强戴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Dart重要的概念 所有的東西都是對(duì)象亭螟,無(wú)論是變量、數(shù)字酌泰、函數(shù)都是對(duì)象媒佣。所有的對(duì)象都是類的實(shí)例匕累。所有的對(duì)象都繼承自...
    JeromeWang閱讀 1,093評(píng)論 1 1
  • 此文章是v1.0+時(shí)編寫(xiě)陵刹,年代久遠(yuǎn),小心有毒,謹(jǐn)慎食用Kニ觥R埠! 一些重要概念 所有的東西都是對(duì)象羡宙,所有的對(duì)象都是類的...
    soojade閱讀 10,056評(píng)論 2 27
  • 標(biāo)簽(空格分隔): Dart Flutter Dart在靜態(tài)語(yǔ)法方面和Java非常相似狸剃,如類型定義、函數(shù)聲明狗热、泛型...
    黃昭鴻閱讀 417評(píng)論 0 0
  • 在本文中我們主要對(duì)標(biāo)JavaScript來(lái)講解Dart與JavaScript的異同钞馁,對(duì)JavaScript還不熟悉...
    CrazyCodeBoy閱讀 1,347評(píng)論 0 3
  • Flutter日漸火爆,因此在進(jìn)行Flutter學(xué)習(xí)前先學(xué)習(xí)一些其所使用的開(kāi)發(fā)語(yǔ)言dart的基礎(chǔ)匿刮,這篇文章主要學(xué)習(xí)...
    Samlss閱讀 10,942評(píng)論 2 28