Javascript基礎(chǔ)

簡介

JavaScript,一種直譯式腳本語言涩维,是一種動態(tài)類型、基于原型的語言袁波,內(nèi)置支持類別瓦阐。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分篷牌,廣泛用于客戶端的腳本語言垄分,最早是在HTML網(wǎng)頁上使用,用來給HTML網(wǎng)頁增加動態(tài)功能娃磺。然而現(xiàn)在JavaScript也可被用于網(wǎng)絡(luò)服務(wù)器薄湿,如Node.js。--維基百科

javascript能做很多事情:

  • web前端偷卧,jQuery, Bootstrap, RequireJS等
  • 移動Web開發(fā) (Mobile Web)豺瘤,jQuery Mobile, zepto.js
  • Web后端,NodeJS
  • Hybrid App听诸,PhoneGap, AppCan
  • 桌面應(yīng)用坐求,如 node-webkit,heX,Electron
  • 游戲,Cocos2d-js
  • 超越web,JavaScript在物聯(lián)網(wǎng)的應(yīng)用
  • 其他:瀏覽器插件等

基礎(chǔ)概念

標(biāo)識符

所謂標(biāo)識符是指變量晌梨、函數(shù)桥嗤、屬性的名字,或者函數(shù)的參數(shù)仔蝌。標(biāo)識符的書寫有幾個特征

  1. 區(qū)分大小寫
  2. 第一個字符必須是字母泛领、下劃線(_)、或者是$
  3. 后面的可以是字母敛惊、數(shù)字渊鞋、下劃線、$

命名規(guī)范

  1. 變量使用駝峰命名法瞧挤,第一個單詞首字母小寫锡宋,后面單詞首字母大寫
  2. 變量使用名詞,方法函數(shù)使用動詞開頭特恬,常量全部用大寫字母执俩,構(gòu)造函數(shù)首字母大寫
  3. 命名要包含語義
var firstName;
var isArray;
var PI;
function Person(){}

變量

變量是對“值”的引用,javascript 用var來聲明變量癌刽。
var a = 1;
聲明變量未賦值役首,那么變量的值為 undefined尝丐。

var a;
a // undefined

變量提升

所謂變量提升,就是javascript引擎先解析代碼宋税,獲取所有聲明的變量摊崭,然后再一行一行地運行讼油,而所有的變量以及聲明語句杰赛,都會被提升到代碼的頭部。

console.log(a); //undefined
var a = 1;

語句

語句是為了完成某種任務(wù)的操作矮台,語句以分號結(jié)尾乏屯,一個分號就表示一個語句結(jié)束。

var a = 1+2;
var b = 'str';

注釋

注釋就是在程序開發(fā)中添加的標(biāo)注瘦赫,方便閱讀辰晕。js引擎會忽略這些語句。
javascript有兩種注釋:一種是單行注釋确虱,另一種是多行注釋含友。

//單行注釋
var a=1;//為變量a賦值
/*
多行注釋
*/
function getName(id){
    return id;
}

數(shù)據(jù)類型

Javascript 中的每一值校辩,都屬于某一種數(shù)據(jù)類型窘问。Javascript的數(shù)據(jù)類型有六種(ES6新增了第七種Symbol)

  • 數(shù)值(number):整數(shù)和小數(shù)(比如1和3.14)
  • 字符串(string):字符組成的文本(比如"Hello World")
  • 布爾值(boolean):true(真)和false(假)兩個特定值
  • undefined:表示“未定義”或不存在,即此處目前沒有任何值
  • null:表示空缺宜咒,即此處應(yīng)該有一個值惠赫,但目前為空
  • 對象(object):各種值組成的集合

通常,我們將數(shù)值故黑、字符串儿咱、布爾值稱為原始類型(primitive type)的值,即它們是最基本的數(shù)據(jù)類型场晶,不能再細(xì)分了混埠。而將對象稱為合成類型(complex type)的值,因為一個對象往往是多個原始類型的值的合成诗轻,可以看作是一個存放各種值的容器岔冀。至于undefined和null,一般將它們看成兩個特殊值概耻。

數(shù)據(jù)類型轉(zhuǎn)換

  1. 轉(zhuǎn)換函數(shù)

    • toString() 轉(zhuǎn)換為字符串使套,在JavaScript中所有數(shù)據(jù)類型都可以轉(zhuǎn)換為string類型
      var n1 = 12;
      var n2 = true;
      var a = [1, 2, 3];
      var o = {};
      function f(){}
      n1.toString(); //"12"
      n2.toString(); //"true"
      a.toString(); //"1,2,3"
      o.toString(); //"[object Object]"
      f.toString(); //"function f(){}"
      
    • parseInt() 解析出一個string或者number類型的整數(shù)部分,如果沒有可以轉(zhuǎn)換的部分鞠柄,則返回NaN(not a number)
      var n1 = "12";
      var n2 = "23hello";
      var n3 = "hello";
      parseInt(n1); //12
      parseInt(n2); //23
      parseInt(n3); //NaN
      
    • parseFloat() 解析出一個string的浮點數(shù)部分侦高,如果沒有可以轉(zhuǎn)換的部分,則返回NaN(not a number)厌杜。
      var n1 = "1.2.3";
      var n2 = "1.2hello"
      var n3 = "hello"
      parseFloat(n1); //1.2
      parseFloat(n2); //1.2
      parseFloat(n3); //NaN 
      
  2. 強制類型轉(zhuǎn)換

    • Boolean(value)——把給定的值轉(zhuǎn)換成Boolean型奉呛;
      Boolean(123); //true
      Boolean(""); //false
      Boolean([]); //true
      Boolean({}); //true
      Boolean(null); //false
      Boolean(undefined); //false
      
    • Number(value)——把給定的值轉(zhuǎn)換成數(shù)字(可以是整數(shù)或浮點數(shù))计螺;
      Number("123"); //123
      Number("123h"); //NaN
      Number(true); //1
      Number(false); //0
      Number(undefined); //NaN
      Number(null); //0
      Number([]); //0
      Number({}); //NaN
      
    • String(value)——把給定的值轉(zhuǎn)換成字符串。
      String(123); //"123"
      String([1,2]); //"1,2"
      String(undefined) //"undefined"
      String(null) //"null"
      String({}) //"[object Object]"
      
  3. 隱式轉(zhuǎn)換

    • 數(shù)字+字符串:數(shù)字轉(zhuǎn)換為字符串
      console.log(12+"12"); //1212
    • 數(shù)字+布爾值:true轉(zhuǎn)換為1瞧壮,false轉(zhuǎn)換為0
      console.log(12+true); //13
    • 字符串+布爾值:布爾值轉(zhuǎn)換為true或false
      console.log("hello"+true); //hellotrue
    • 布爾值+布爾值
      console.log(true+true); //2

null和undefined

undefined 表示一種未知狀態(tài)登馒,聲明了但沒有初始化的變量,變量的值時一個未知狀態(tài)咆槽。訪問不存在的屬性或?qū)ο體indow.xxx)方法沒有明確返回值時陈轿,返回值是一個undefined.當(dāng)對未聲明的變量應(yīng)用typeof運算符時,顯示為undefined秦忿。
null表示尚未存在的對象,null是一個有特殊意義的值麦射。可以為變量賦值為null灯谣,此時變量的值為“已知狀態(tài)”(不是undefined)潜秋,即null。(用來初始化變量胎许,清除變量內(nèi)容峻呛,釋放內(nèi)存)

undefined==null   //結(jié)果為true,但含義不同。
undefined===null //false,兩者類型不一致辜窑,前者為“undefined”钩述,后者為“object”
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市谬擦,隨后出現(xiàn)的幾起案子切距,更是在濱河造成了極大的恐慌,老刑警劉巖惨远,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谜悟,死亡現(xiàn)場離奇詭異,居然都是意外死亡北秽,警方通過查閱死者的電腦和手機葡幸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贺氓,“玉大人蔚叨,你說我怎么就攤上這事≌夼啵” “怎么了蔑水?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扬蕊。 經(jīng)常有香客問我搀别,道長,這世上最難降的妖魔是什么尾抑? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任歇父,我火速辦了婚禮蒂培,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘榜苫。我一直安慰自己护戳,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布垂睬。 她就那樣靜靜地躺著媳荒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪羔飞。 梳的紋絲不亂的頭發(fā)上肺樟,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天檐春,我揣著相機與錄音逻淌,去河邊找鬼。 笑死疟暖,一個胖子當(dāng)著我的面吹牛卡儒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俐巴,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼骨望,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了欣舵?” 一聲冷哼從身側(cè)響起擎鸠,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缘圈,沒想到半個月后劣光,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡糟把,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年绢涡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遣疯。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡雄可,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缠犀,到底是詐尸還是另有隱情数苫,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布辨液,位于F島的核電站虐急,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏室梅。R本人自食惡果不足惜戏仓,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一疚宇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赏殃,春花似錦敷待、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至抗蠢,卻和暖如春举哟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背迅矛。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工妨猩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秽褒。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓壶硅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親销斟。 傳聞我的和親對象是個殘疾皇子庐椒,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

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