成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

夯實(shí)基礎(chǔ)js

shengguo / 1157人閱讀

摘要:函數(shù)聲明函數(shù)表達(dá)式表達(dá)式定義的函數(shù),成為匿名函數(shù)。匿名函數(shù)沒(méi)有函數(shù)提升。一種數(shù)據(jù)類型,它的實(shí)例是唯一且不可改變的。和是本語(yǔ)言的其他兩個(gè)基本要素??傊?,這些也帶來(lái)了對(duì)象字面值和類聲明緊密聯(lián)系起來(lái),讓基于對(duì)象的設(shè)計(jì)得益于一些同樣的便利。

聲明(Declarations)

undefined值在布爾類型環(huán)境中會(huì)被當(dāng)作false。

數(shù)值類型環(huán)境中undefined值會(huì)被轉(zhuǎn)換為NaN。

對(duì)一個(gè)空變量求值時(shí),空值 null 在數(shù)值類型環(huán)境中會(huì)被當(dāng)作0來(lái)對(duì)待,而布爾類型環(huán)境中會(huì)被當(dāng)作false

JavaScript 變量感覺(jué)上是被“提升”或移到了所有函數(shù)和語(yǔ)句之前。提升后的變量將返回 undefined 值,所以即使在使用或引用某個(gè)變量之后存在聲明和初始化操作,這個(gè)被提升的引用仍將得到 undefined 值。

由于存在變量聲明提升,一個(gè)函數(shù)中所有的var語(yǔ)句應(yīng)盡可能地放在接近函數(shù)頂部的地方。這大大地提升了程序代碼的清晰度。

(在 ECMAScript 2015 中,let(const)將不會(huì)提升變量到代碼塊的頂部。因此,在變量聲明之前引用這個(gè)變量,將拋出錯(cuò)誤ReferenceError。這個(gè)變量將從代碼塊一開(kāi)始就處在一個(gè)“暫時(shí)性死區(qū)”,直到這個(gè)變量被聲明為止。)

對(duì)于函數(shù),只有函數(shù)聲明會(huì)被提升到頂部,不包括函數(shù)表達(dá)式。

/* 函數(shù)聲明 */
foo(); // "bar"   
function foo() {
  console.log("bar");
}   

/* 函數(shù)表達(dá)式   表達(dá)式定義的函數(shù),成為匿名函數(shù)。匿名函數(shù)沒(méi)有函數(shù)提升。*/   
baz(); // TypeError: baz is not a function
//此時(shí)的"baz"相當(dāng)于一個(gè)聲明的變量,類型為undefined。
由于baz只是相當(dāng)于一個(gè)變量,因此瀏覽器認(rèn)為"baz()"不是一個(gè)函數(shù)。
var baz = function() {
  console.log("bar2");
};

全局對(duì)象是 window,你可以通過(guò)指定 window 或 frame 的名字,從一個(gè) window 或 frame 訪問(wèn)另一個(gè) window 或 frame 中聲明的變量。例如,設(shè)想一個(gè)叫 phoneNumber 的變量在文檔里被聲明,你可以在子框架里用 parent.phoneNumber 來(lái)引用它。

常量(Constants)

在同一作用域中,不能用與變量或函數(shù)同樣的名字來(lái)命名常量。然而,對(duì)象屬性是不受保護(hù)的,所以下面的語(yǔ)句執(zhí)行沒(méi)有問(wèn)題。

const MY_OBJECT = {"key": "value"};
MY_OBJECT.key = "otherValue";
    
數(shù)據(jù)結(jié)構(gòu)和類型

六種是 原型 的數(shù)據(jù)類型 以及 Object 對(duì)象

Boolean. 布爾值,true 和 false.

一個(gè)表明 null 值的特殊關(guān)鍵字。 JavaScript 是大小寫敏感的,因此 null 與 Null、NULL或其他變量完全不同。

變量未定義時(shí)的屬性。

Number. 表示數(shù)字,例如: 42 或者 3.14159。

String. 表示字符串,例如:"Howdy"

Symbol ( 在 ECMAScript 6 中新添加的類型).。一種數(shù)據(jù)類型,它的實(shí)例是唯一且不可改變的。

Objects 和 functions 是本語(yǔ)言的其他兩個(gè)基本要素。你可以將對(duì)象視為存放值的命名容器,而將函數(shù)視為你的應(yīng)用程序能夠執(zhí)行的過(guò)程(procedures)。

在涉及加法運(yùn)算符(+)的數(shù)字和字符串表達(dá)式中,JavaScript 會(huì)把數(shù)字值轉(zhuǎn)換為字符串。

x = "The answer is " + 42 // "The answer is 42"
y = 42 + " is the answer" // "42 is the answer"

在涉及其它運(yùn)算符(譯注:如下面的減號(hào)"-")時(shí),JavaScript語(yǔ)言不會(huì)把數(shù)字變?yōu)樽址?。例如(譯注:第一例是數(shù)學(xué)運(yùn)算,第二例是字符串運(yùn)算):

"37" - 7 // 30
"37" + 7 // "377"
字符串轉(zhuǎn)換為數(shù)字(converting strings to numbers)

parseInt()和parseFloat()

將字符串轉(zhuǎn)換為數(shù)字的另一種方法是使用單目加法運(yùn)算符。

"1.1" + "1.1" = "1.11.1"
(+"1.1") + (+"1.1") = 2.2   // 注:加入括號(hào)為清楚起見(jiàn),不是必需的。

對(duì)象屬性名字可以是任意字符串,包括空串。如果對(duì)象屬性名字不是合法的javascript標(biāo)識(shí)符,它必須用""包裹。屬性的名字不合法,那么便不能用.訪問(wèn)屬性值,而是通過(guò)類數(shù)組標(biāo)記("[]")訪問(wèn)和賦值。

var unusualPropertyNames = {
  "": "An empty string",
  "!": "Bang!"
}
console.log(unusualPropertyNames."");   // 語(yǔ)法錯(cuò)誤: Unexpected string
console.log(unusualPropertyNames[""]);  // An empty string
console.log(unusualPropertyNames.!);    // 語(yǔ)法錯(cuò)誤: Unexpected token !
console.log(unusualPropertyNames["!"]); // Bang!

注意:

var foo = {a: "alpha", 2: "two"};
console.log(foo.a);    // alpha
console.log(foo[2]);   // two
//console.log(foo.2);  // Error: missing ) after argument list
//console.log(foo[a]); // Error: a is not defined
console.log(foo["a"]); // alpha
console.log(foo["2"]); // two

在ES2015,對(duì)象字面值擴(kuò)展支持在創(chuàng)建時(shí)設(shè)置原型,簡(jiǎn)寫foo:foo分配,定義方法,加工父函數(shù)(super calls),計(jì)算屬性名(動(dòng)態(tài))??傊@些也帶來(lái)了對(duì)象字面值和類聲明緊密聯(lián)系起來(lái),讓基于對(duì)象的設(shè)計(jì)得益于一些同樣的便利。

var obj = {
    // __proto__
    __proto__: theProtoObj,
    // Shorthand for ‘handler: handler’
    handler,
    // Methods
    toString() {
     // Super calls
     return "d " + super.toString();
    },
    // Computed (dynamic) property names
    [ "prop_" + (() => 42)() ]: 42
};

能在JavaScript的字符串中使用的···特殊字符···

轉(zhuǎn)義字符

// 引號(hào)轉(zhuǎn)義
var quote = "He read "The Cremation of Sam McGee" by R.W. Service.";
// 轉(zhuǎn)義反斜線
var home = "c:	emp";
// 轉(zhuǎn)義換行 一條語(yǔ)句拆成多行書寫
var str = "this string 
is broken 
across multiple
lines."
console.log(str);   // this string is broken across multiplelines.
// Javascript沒(méi)有“heredoc”語(yǔ)法,但可以用行末的換行符轉(zhuǎn)義和轉(zhuǎn)義的換行來(lái)近似實(shí)現(xiàn) 
var poem = 
"Roses are red,

Violets are blue.

I"m schizophrenic,

And so am I."

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87928.html

相關(guān)文章

  • 夯實(shí)基礎(chǔ)js - 語(yǔ)句篇

    摘要:下面這些值將被計(jì)算出空字符串當(dāng)傳遞給條件語(yǔ)句時(shí),所有其他值,包括所有對(duì)象會(huì)被計(jì)算為。如果表達(dá)式的值為,將執(zhí)行循環(huán)語(yǔ)句若為,循環(huán)終止。如果要執(zhí)行多條語(yǔ)句,就要用中括號(hào)把語(yǔ)句括起來(lái)。若存在則執(zhí)行,然后會(huì)回到第步執(zhí)行語(yǔ)句。 下面這些值將被計(jì)算出 false (also known as Falsy values): false undefined null 0 NaN 空字符串 () 當(dāng)...

    lixiang 評(píng)論0 收藏0
  • 夯實(shí)JS基礎(chǔ)(一):this的指向問(wèn)題和經(jīng)典面試題

    摘要:很多高級(jí)編程語(yǔ)言都給新創(chuàng)建的對(duì)象分配一個(gè)引用自身的指針比如中的指針,中的,也有指針,雖然它的指向可能相對(duì)復(fù)雜些,但是指向的,永遠(yuǎn)只可能是對(duì)象。 很多高級(jí)編程語(yǔ)言都給新創(chuàng)建的對(duì)象分配一個(gè)引用自身的指針,比如JAVA、C++中的this指針,python中的self,JavaScript也有this指針,雖然它的指向可能相對(duì)復(fù)雜些,但是this指向的,永遠(yuǎn)只可能是對(duì)象。 一、在一般函數(shù)方法...

    EasonTyler 評(píng)論0 收藏0
  • 夯實(shí)JS基礎(chǔ)(一):this的指向問(wèn)題和經(jīng)典面試題

    摘要:很多高級(jí)編程語(yǔ)言都給新創(chuàng)建的對(duì)象分配一個(gè)引用自身的指針比如中的指針,中的,也有指針,雖然它的指向可能相對(duì)復(fù)雜些,但是指向的,永遠(yuǎn)只可能是對(duì)象。 很多高級(jí)編程語(yǔ)言都給新創(chuàng)建的對(duì)象分配一個(gè)引用自身的指針,比如JAVA、C++中的this指針,python中的self,JavaScript也有this指針,雖然它的指向可能相對(duì)復(fù)雜些,但是this指向的,永遠(yuǎn)只可能是對(duì)象。 一、在一般函數(shù)方法...

    lucas 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<