摘要:主要講述了中關(guān)于變量聲明和代碼編寫時你可能沒它留意的一些坑。但是換行符并不會被忽略,換行符起到了分號的功能。需要注意的是,大小寫敏感,和是兩個不同的變量。保留字中有一批稱為保留字的家伙是不能用做變量的,用了在一些瀏覽器中很可能會報(bào)錯。
今天翻譯的這篇文章依舊比較基礎(chǔ),是這個系列文章的第三篇。主要講述了JavaScript中關(guān)于變量聲明和代碼編寫時你可能沒它留意的一些坑。
那些熟悉PHP,C,Java語言的人初接觸JavaScript時,往往會覺得這是一門非常奇怪的語言。讓我們從語言的基本特性:變量以及編碼方式等方面來說說這些奇怪的地方。
代碼結(jié)構(gòu) 分號(;)JavaScript的語句直接是用分號(;)來隔離的。
空格和tab會被自動忽略,上述語句放在一行寫也是可以的。
alert("Hello"); alert("World!");
但是換行符并不會被忽略,換行符起到了分號(;)的功能。
分號(;)缺失“陷阱”JavaScript初學(xué)者寫多條語句時常常會在分號上栽跟頭。
下面的語句是不會運(yùn)行的
var a="long line"
語法分析程序會把它解釋為
var a = "long; line ";
有未完結(jié)的字符串時(缺少反引號)會報(bào)錯。
下列語句不能得到你想要的結(jié)果
return result;
它被解釋為
return; result;
這和
return result;
明顯不同。
如果你想得到正確的答案,轉(zhuǎn)義符()(反斜線)可以幫你。下列語句可以正確運(yùn)行。
return result;
var a = "long line "
如果一個表達(dá)式?jīng)]有結(jié)束,換行也會被忽略。下面的代碼都是可以正常運(yùn)行的,有些奇怪,不過事實(shí)就是這樣。
var a = "long " + " line " var b = 2 + ( 2 + 3 ) var b = 2 * 2 + 4 alert(b)
總的來說,在大多數(shù)情況下,在結(jié)尾省略分號(;)是可行的,但是這樣可能會導(dǎo)致一些莫名奇妙的bug,關(guān)于是否寫分號,一直以來到存在爭議,不過越來越多的人認(rèn)為在結(jié)尾處加上分號是一個好習(xí)慣。
變量 定義變量是需要被定義的,在任何地方使用var都不會出錯,(ES6有l(wèi)et,const)
var x;
變量被定義后就可以被賦任何值。
var x; x = 5;
變量也可以一次性定義多個,用逗號分開
var x,y,z;
還可以一邊定義一邊賦值
var x="lalla",y="hahha";
JavaScript中也可以給一個未定義的變量賦值
x="lalla",y="hahha";
但是這樣變量會變?yōu)槿肿兞浚瑫?dǎo)致一些你不想要的后果。
變量名稱變量名的開頭必須是字母,$或_,第二位及以后還可以使用數(shù)字。
var $this, _private, $, _, $1, user15
需要注意的是,JavaScript大小寫敏感,A和a是兩個不同的變量。
保留字JavaScript中有一批稱為保留字的家伙是不能用做變量的,用了在一些瀏覽器中很可能會報(bào)錯。這里有一份保留字列表。
變量類型主要有
number
string
boolean
object(很神奇的東西,以后會詳細(xì)說到)
special values:bull和undefined
弱類型JavaScript中的變量是弱類型的,這意味著一些兩點(diǎn)
每個變量都有其類型;
一個變量值得改變會影響它的類型。
比如說
var userId = 123; // 123 is a number var name = "John"; // "John" is a string var userId = 123; // 123 is a number userId = false; // now userId is boolean注釋
JavaScript有兩種注釋方法
單行注釋
// let"s see who is here: var name = "John"; // My most valued visitor
多行注釋
/* The following variable has a short name. Usually a short name means that the variable is temporary and used only in nearest code. */ var a = "John";塊
由{}包起來的多行語句稱作塊。這在for,if,while,function等中常常用到。
本文小結(jié)在任何地方使用var 定義變量都不會出錯;
變量可以是任何類型
兩種注釋方式
在語句結(jié)束時不要忘了加分號。
原文Variables and statements
[深入了解JavaScript系列文章]()
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/86377.html
摘要:變量的分類全局變量可以在任何地方使用的變量局部變量在函數(shù)內(nèi)聲明的變量只在函數(shù)內(nèi)有定義,作用域是局部性的什么時候使用當(dāng)一個數(shù)據(jù)需要被反復(fù)使用時,就要先保存在變量中。 第一篇回顧學(xué)習(xí),變量 什么是變量 變量就是在內(nèi)存中刨一個坑存一個數(shù)據(jù),再給這個坑起個名。為什么要給一個加引號呢,因?yàn)镴avaScript是松散類型的,即一個變量可以用來保存任何類型的數(shù)據(jù)。變量的分類:全局變量:可以在任何地方...
之前關(guān)注了一個公眾號: JavaScript,里面詳細(xì)描述了this的各種情況,在此總結(jié)一下.只考慮當(dāng)宿主環(huán)境是瀏覽器的時候,并且處于非嚴(yán)格模式下:this是在運(yùn)行時綁定的,并不是在編寫時綁定的,this的綁定只取決于函數(shù)的調(diào)用方式.在全局范圍內(nèi),this等價(jià)于window對象。 console.log(this === window); //true 在全局范圍內(nèi),用var聲明一個變量和給th...
摘要:在中,沒有塊級作用域一說在或者等語言中,等語句塊內(nèi)可以包含自己的局部變量,這些變量的作用域是這些語句的語句塊,而在中,不存在塊級作用域的說法。作用域鏈如果要深入理解中變量的作用域,那就必須拿出作用域鏈這個終極武器。 Javascript 這門語言與其他的大部分語言相比,有很多特殊性,這是很多人喜歡它或者討厭它的原因。其中變量的作用域問題,對很多初學(xué)者來說就是一個又一個「坑」。 變量的...
摘要:為此決定自研一個富文本編輯器。例如當(dāng)要轉(zhuǎn)化的對象有環(huán)存在時子節(jié)點(diǎn)屬性賦值了父節(jié)點(diǎn)的引用,為了關(guān)于函數(shù)式編程的思考作者李英杰,美團(tuán)金融前端團(tuán)隊(duì)成員。只有正確使用作用域,才能使用優(yōu)秀的設(shè)計(jì)模式,幫助你規(guī)避副作用。 JavaScript 專題之惰性函數(shù) JavaScript 專題系列第十五篇,講解惰性函數(shù) 需求 我們現(xiàn)在需要寫一個 foo 函數(shù),這個函數(shù)返回首次調(diào)用時的 Date 對象,注意...
摘要:換句話說,定義在閉包中的函數(shù)可以記憶它被創(chuàng)建時候的環(huán)境。詞法環(huán)境的概念定義摘自百科。一個詞法環(huán)境由一個環(huán)境記錄項(xiàng)和可能為空的外部詞法環(huán)境引用構(gòu)成。中使用詞法環(huán)境管理靜態(tài)作用域。 一個資深的同事在我出發(fā)去面試前告誡我,問JS知識點(diǎn)的時候千萬別主動提閉包,它就是一個坑啊!坑??!啊! 閉包確實(shí)是js的難點(diǎn)和重點(diǎn),其實(shí)也沒那么可怕,關(guān)鍵是機(jī)制的理解,可以和函數(shù)一起單獨(dú)拿出來說說,其實(shí)關(guān)于閉包的...
閱讀 3055·2021-11-22 09:34
閱讀 2521·2021-09-30 09:47
閱讀 1456·2021-09-03 10:32
閱讀 3726·2021-08-16 10:49
閱讀 1798·2019-08-30 15:55
閱讀 2475·2019-08-30 15:52
閱讀 3333·2019-08-30 15:44
閱讀 1365·2019-08-30 15:44