day01-Javascript基礎語法

  • HTML :標記語言
  • JavaScript :編程語言

markdown

序言

JavaScript發(fā)展歷史(JS)

1. 1994年颁虐,網(wǎng)景公司(Netscape)發(fā)布了Navigator瀏覽器0.9版炮障,這是世界上第一款比較成熟的網(wǎng)絡瀏覽器值漫,轟動一時。但是這是一款名副其實的瀏覽器--只能瀏覽頁面芦疏,瀏覽器無法與用戶互動,當時解決這個問題有兩個辦法阔逼,一個是采用現(xiàn)有的語言,許它們直接嵌入網(wǎng)頁她按。另一個是發(fā)明一種全新的語言床未。
    liveScript ==> javaScript ==> ECMAscript

2. 1995年Sun公司將Oak語言改名為Java,正式向市場推出俘侠。Sun公司大肆宣傳象缀,許諾這種語言可以"一次編寫,到處運   行"(Write Once, Run Anywhere)爷速,它看上去很可能成為未來的主宰央星。

3. 網(wǎng)景公司動了心,決定與Sun公司結成聯(lián)盟

4. 34歲的系統(tǒng)程序員Brendan Eich登場了惫东。1995年4月莉给,網(wǎng)景公司錄用了他,他只用10天時間就把Javascript設計出來了。(多肽語言)

5. 
    (1)借鑒C語言的基本語法
    (2)借鑒Java語言的數(shù)據(jù)類型和內存管理
    (3)借鑒Scheme語言廉沮,將函數(shù)提升到"第一等公民"(first class)的地位
    (4)借鑒Self語言颓遏,使用基于原型(prototype)的繼承機制

JavaScript能干什么

1. 常見的網(wǎng)頁效果【表單驗證,輪播圖滞时。叁幢。∑夯】
2. 與H5配合實現(xiàn)游戲【水果忍者: http://www.jq22.com/demo/html5-fruit-ninja/】
3. 實現(xiàn)應用級別的程序【http://naotu.baidu.com】
4. 實現(xiàn)統(tǒng)計效果【http://echarts.baidu.com/examples/】
5. 地理定位等功能【http://lbsyun.baidu.com/jsdemo.htm#i4_5】
6. 在線學編程【https://codecombat.163.com/play/】
7. js可以實現(xiàn)人工智能【面部識別】
8. 曼玩。。刽漂。

JavaScript的組成

1. ECMASCRIPT: 定義了javascript的語法規(guī)范,描述了語言的基本語法和數(shù)據(jù)類型
2. BOM (Browser Object Model): 瀏覽器對象模型
  - 有一套成熟的可以操作瀏覽器的 API演训,通過 BOM 可以操作瀏覽器弟孟。比如: 彈出框贝咙、瀏覽器跳轉、獲取分辨率等
3. DOM (Document Object Model): 文檔對象模型
  - 有一套成熟的可以操作頁面元素的 API拂募,通過 DOM 可以操作頁面中的元素庭猩。比如: 增加個 div窟她,減少個 div,給 div 換個位置等

總結: JS 就是通過固定的語法去操作 瀏覽器 和 標簽結構 來實現(xiàn)網(wǎng)頁上的各種效果

JavaScript代碼的書寫位置

  • css 一樣蔼水,我們的 js 也可以有多種方式書寫在頁面上讓其生效
  • js 也有多種方式書寫震糖,分為 行內式內嵌式趴腋,外鏈式

行內式 JS 代碼(不推薦)

  • 寫在標簽上的 js 代碼需要依靠事件(行為)來觸發(fā)
<!-- 寫在 a 標簽的 href 屬性上 -->
<a href="javascript:alert('我是一個彈出層');">點擊一下試試</a>

<!-- 寫在其他元素上 -->
<div onclick="alert('我是一個彈出層')">點一下試試看</div>

<!--
    注:onclick 是一個事件(點擊事件)吊说,當點擊元素的時候執(zhí)行后面的 js 代碼
-->

內嵌式 JS 代碼

  • 內嵌式的 js 代碼會在頁面打開的時候直接觸發(fā)
<!-- 在 html 頁面書寫一個 script 標簽,標簽內部書寫 js 代碼 -->
<script type="text/javascript">
    alert('我是一個彈出層')
</script>

<!--
    注:script 標簽可以放在 head 里面也可以放在 body 里面
-->

外鏈式 JS 代碼(推薦)

  • 外鏈式 js 代碼只要引入了 html 頁面优炬,就會在頁面打開的時候直接觸發(fā)
  • 新建一個 .js 后綴的文件颁井,在文件內書寫 js 代碼,把寫好的 js 文件引入 html 頁面
// 我是 index.js 文件
alert('我是一個彈出層')
<!-- 我是一個 html 文件 -->

<!-- 通過 script 標簽的 src 屬性蠢护,把寫好的 js 文件引入頁面 -->
<script src="index.js"></script>

<!-- 一個頁面可以引入多個 js 文件 -->
<script src="index1.js"></script>
<script src="index2.js"></script>
<script src="index3.js"></script>

JS 中的注釋

  • 學習一個語言雅宾,先學習一個語言的注釋,因為注釋是給我們自己看的葵硕,也是給開發(fā)人員看的
  • 寫好一個注釋眉抬,有利于我們以后閱讀代碼

單行注釋

  • 一般就是用來描述下面一行代碼的作用
  • 可以直接寫兩個 / ,也可以按 ctrl + /
// 我是一個單行注釋

// 下面代碼表示在瀏覽器里面出現(xiàn)一個彈出層
alert('我是一個彈出層')

多行注釋

  • 一般用來寫一大段話懈凹,或者注釋一段代碼
  • 可以直接寫 /**/ 然后在兩個星號中間寫注釋蜀变,也可以按 shift + alt + a
/*
    我是一個多行注釋
*/

/*
    注釋的代碼不會執(zhí)行
    alert('我是一個彈出層')
    alert('我是一個彈出層')
*/
alert('我是一個彈出層')

變量(重點)

  • 變量指的是在程序中保存數(shù)據(jù)的一個容器
  • 變量是計算機內存中存儲數(shù)據(jù)的標識符,根據(jù)變量名稱可以獲取到內存中存儲的數(shù)據(jù)
  • 也就是說介评,我們向內存中存儲了一個數(shù)據(jù)昏苏,然后要給這個數(shù)據(jù)起一個名字,為了是我們以后再次找到他
  • 語法: var 變量名 = 值

定義變量及賦值

// 定義一個變量
var num;

// 給一個變量賦值
num = 100;

// 定義一個變量的同時給其賦值
var num2 = 200;
  • 注意:
    1. 一個變量名只能存儲一個值
    2. 當再次給一個變量賦值的時候威沫,前面一次的值就沒有了
    3. 變量名稱區(qū)分大小寫(JS 嚴格區(qū)分大小寫)

變量的命名規(guī)則和命名規(guī)范

  • 規(guī)則: 必須遵守的贤惯,不遵守就是錯
    1. 一個變量名稱可以由 數(shù)字字母棒掠、英文下劃線(_)孵构、美元符號($) 組成
    2. 嚴格區(qū)分大小寫
    3. 不能由數(shù)字開頭,不要使用中文漢字命名
    4. 不能是 保留字 或者 關鍵字
    5. 不要出現(xiàn)空格
  • 規(guī)范: 建議遵守的(開發(fā)者默認)烟很,不遵守不會報錯
    1. 變量名盡量有意義(語義化)
    2. 遵循駝峰命名規(guī)則颈墅,由多個單詞組成的時候,從第二個單詞開始首字母大寫

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

  • 是指我們存儲在內存中的數(shù)據(jù)的類型
  • 我們通常分為兩大類 基本數(shù)據(jù)類型復雜數(shù)據(jù)類型

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

  1. 數(shù)值類型(number)
    • 一切數(shù)字都是數(shù)值類型(包括二進制雾袱,十進制恤筛,十六進制等)
    • NaN(not a number),一個非數(shù)字
  2. 字符串類型(string)
    • 被引號包裹的所有內容(可以是單引號也可以是雙引號)
  3. 布爾類型(boolean)
    • 只有兩個(true 或者 false
  4. null類型(null)
    • 只有一個芹橡,就是 null毒坛,表示空的意思
  5. undefined類型(undefined)
    • 只有一個,就是 undefined,表示沒有值的意思

復雜數(shù)據(jù)類型(暫時先不講)

  1. 對象類型(object)
  2. 函數(shù)類型(function)
  3. 煎殷。屯伞。。

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

  • 既然已經把數(shù)據(jù)分開了類型豪直,那么我們就要知道我們存儲的數(shù)據(jù)是一個什么類型的數(shù)據(jù)
  • 使用 typeof 關鍵字來進行判斷
// 第一種使用方式
var n1 = 100;
console.log(typeof n1);

// 第二種使用方式
var s1 = 'abcdefg';
console.log(typeof(s1));

判斷一個變量是不是數(shù)字

  • 可以使用 isNaN 這個方法來判斷一個變量是不是數(shù)字
  • isNaN :`is not a number
// 如果變量是一個數(shù)字
var n1 = 100;
console.log(isNaN(n1)); //=> false

// 如果變量不是一個數(shù)字
var s1 = 'Jack'
console.log(isNaN(s1)); //=> true

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

  • 數(shù)據(jù)類型之間的轉換劣摇,比如數(shù)字轉成字符串,字符串轉成布爾弓乙,布爾轉成數(shù)字等

其他數(shù)據(jù)類型轉成數(shù)值

  1. Number(變量)

    • 可以把一個變量強制轉換成數(shù)值類型
    • 可以轉換小數(shù)末融,會保留小數(shù)
    • 可以轉換布爾值
    • 遇到不可轉換的都會返回 NaN
  2. parseInt(變量)

  • 從第一位開始檢查,是數(shù)字就轉換暇韧,直到一個不是數(shù)字的內容
    • 開頭就不是數(shù)字滑潘,那么直接返回 NaN
    • 不認識小數(shù)點,只能保留整數(shù)
  1. parseFloat(變量)

    • 從第一位開始檢查锨咙,是數(shù)字就轉換语卤,知道一個不是數(shù)字的內容

    • 開頭就不是數(shù)字,那么直接返回 NaN

    • 認識一次小數(shù)點

  2. 除了加法以外的數(shù)學運算

    • 運算符兩邊都是可運算數(shù)字才行
    • 如果運算符任何一遍不是一個可運算數(shù)字酪刀,那么就會返回 NaN
    • 加法不可以用

其他數(shù)據(jù)類型轉成字符串

  1. 變量.toString()
    • 有一些數(shù)據(jù)類型不能使用 toString() 方法粹舵,比如 undefinednull
  2. String(變量)
    • 所有數(shù)據(jù)類型都可以
  3. 使用加法運算
    • 在 JS 里面,+ 由兩個含義
    • 字符串拼接: 只要 + 任意一邊是字符串骂倘,就會進行字符串拼接
    • 加法運算:只有 + 兩邊都是數(shù)字的時候眼滤,才會進行數(shù)學運算

其他數(shù)據(jù)類型轉成布爾

  1. Boolean(變量)
    • 在 js 中,只有 ''历涝、0诅需、nullundefined荧库、NaN堰塌,這些是 false,其余都是 true

運算符

  • 就是在代碼里面進行運算的時候使用的符號分衫,不光只是數(shù)學運算场刑,我們在 js 里面還有很多的運算方式

數(shù)學運算符

  1. +
  • 只有符號兩邊都是數(shù)字的時候才會進行加法運算
    • 只要符號任意一邊是字符串類型,就會進行字符串拼接
  1. -

    • 會執(zhí)行減法運算

    • 會自動把兩邊都轉換成數(shù)字進行運算

  2. *

    • 會執(zhí)行乘法運算
    • 會自動把兩邊都轉換成數(shù)字進行運算
  3. /

    • 會執(zhí)行除法運算
    • 會自動把兩邊都轉換成數(shù)字進行運算
  4. %

    • 會執(zhí)行取余運算
    • 會自動把兩邊都轉換成數(shù)字進行運算

賦值運算符

  1. =

    • 就是把 = 右邊的賦值給等號左邊的變量名
    • var num = 100
    • 就是把 100 賦值給 num 變量
    • 那么 num 變量的值就是 100
  2. +=

    var a = 10;
    a += 10;
    console.log(a); //=> 20
    
    • a += 10 等價于 a = a + 10
  3. -=

    var a = 10;
    a -= 10;
    console.log(a); //=> 0
    
    • a -= 10 等價于 a = a - 10
  4. *=

    var a = 10;
    a *= 10;
    console.log(a); //=> 100
    
    • a *= 10 等價于 a = a * 10
  5. /+

    var a = 10;
    a /= 10;
    console.log(a); //=> 1
    
    • a /= 10 等價于 a = a / 10
  6. %=

    var a = 10;
    a %= 10;
    console.log(a); //=> 0
    
    • a %= 10 等價于 a = a % 10

比較運算符

  1. ==
    • 比較符號兩邊的值是否相等蚪战,不管數(shù)據(jù)類型
    • 1 == '1'
    • 兩個的值是一樣的牵现,所以得到 true
  2. ===
    • 比較符號兩邊的值和數(shù)據(jù)類型是否都相等
    • 1 === '1'
    • 兩個值雖然一樣,但是因為數(shù)據(jù)類型不一樣邀桑,所以得到 false
  3. !=
    • 比較符號兩邊的值是否不等
    • 1 != '1'
    • 因為兩邊的值是相等的瞎疼,所以比較他們不等的時候得到 false
  4. !==
    • 比較符號兩邊的數(shù)據(jù)類型和值是否不等
    • 1 !== '1'
    • 因為兩邊的數(shù)據(jù)類型確實不一樣,所以得到 true
  5. >=
    • 比較左邊的值是否 大于或等于 右邊的值
    • 1 >= 1 結果是 true
    • 1 >= 0 結果是 true
    • 1 >= 2 結果是 false
  6. <=
    • 比較左邊的值是否 小于或等于 右邊的值
    • 1 <= 2 結果是 true
    • 1 <= 1 結果是 true
    • 1 <= 0 結果是 false
  7. >
    • 比較左邊的值是否 大于 右邊的值
    • 1 > 0 結果是 true
    • 1 > 1 結果是 false
    • 1 > 2 結果是 false
  8. <
    • 比較左邊的值是否 小于 右邊的值
    • 1 < 2 結果是 true
    • 1 < 1 結果是 false
    • 1 < 0 結果是 false

強化練習1

  • 為抵抗洪水壁畸,戰(zhàn)士連續(xù)作戰(zhàn)89小時贼急,編程計算共多少天零多少小時?

  • 小明要到美國旅游,可是那里的溫度是以華氏度為單位記錄的竿裂。

    • 它需要一個程序將華氏溫度(80度)轉換為攝氏度玉吁,并以華氏度和攝氏度為單位分別顯示該溫度照弥。
    • 提示:攝氏度與華氏度的轉換公式為:攝氏度 = 5/9.0*(華氏度-32)保留3位小數(shù)

邏輯運算符

  1. &&
    • 進行 且 的運算
    • 符號左邊必須為 true 并且右邊也是 true腻异,才會返回 true
    • 只要有一邊不是 true,那么就會返回 false
    • true && true 結果是 true
    • true && false 結果是 false
    • false && true 結果是 false
    • false && false 結果是 false
  2. ||
    • 進行 或 的運算
    • 符號的左邊為 true 或者右邊為 true这揣,都會返回 true
    • 只有兩邊都是 false 的時候才會返回 false
    • true || true 結果是 true
    • true || false 結果是 true
    • false || true 結果是 true
    • false || false 結果是 false
  3. !
    • 進行 取反 運算
    • 本身是 true 的悔常,會變成 false
    • 本身是 false 的,會變成 true
    • !true 結果是 false
    • !false 結果是 true

自增自減運算符(一元運算符)

  1. ++

    • 進行自增運算

    • 分成兩種给赞,前置++后置++

    • 前置++机打,會先把值自動 +1,在返回

      var a = 10;
      console.log(++a);
      // 會返回 11片迅,并且把 a 的值變成 11
      
    • 后置++残邀,會先把值返回,在自動+1

      var a = 10;
      console.log(a++);
      // 會返回 10柑蛇,然后把 a 的值變成 11
      
  2. --

    • 進行自減運算
    • 分成兩種芥挣,前置--后置--
    • ++ 運算符道理一樣

強化練習2

  1. 掌握邏輯運算的意義
  2. 掌握八進制、十六進制的寫法
  3. 掌握NaN的含義
  4. 掌握Number函數(shù)的轉換結果
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末耻台,一起剝皮案震驚了整個濱河市空免,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盆耽,老刑警劉巖蹋砚,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異摄杂,居然都是意外死亡坝咐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門析恢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來畅厢,“玉大人,你說我怎么就攤上這事氮昧】蚨牛” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵袖肥,是天一觀的道長咪辱。 經常有香客問我,道長椎组,這世上最難降的妖魔是什么油狂? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上专筷,老公的妹妹穿的比我還像新娘弱贼。我一直安慰自己,他們只是感情好磷蛹,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布吮旅。 她就那樣靜靜地躺著,像睡著了一般味咳。 火紅的嫁衣襯著肌膚如雪庇勃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天槽驶,我揣著相機與錄音责嚷,去河邊找鬼。 笑死掂铐,一個胖子當著我的面吹牛罕拂,可吹牛的內容都是我干的。 我是一名探鬼主播全陨,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼爆班,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了烤镐?” 一聲冷哼從身側響起蛋济,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炮叶,沒想到半個月后碗旅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡镜悉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年祟辟,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侣肄。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡旧困,死狀恐怖,靈堂內的尸體忽然破棺而出稼锅,到底是詐尸還是另有隱情吼具,我是刑警寧澤,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布矩距,位于F島的核電站拗盒,受9級特大地震影響,放射性物質發(fā)生泄漏锥债。R本人自食惡果不足惜陡蝇,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一痊臭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧登夫,春花似錦广匙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至戏蔑,卻和暖如春蹋凝,著一層夾襖步出監(jiān)牢的瞬間鲁纠,已是汗流浹背总棵。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留改含,地道東北人情龄。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像捍壤,于是被迫代替她去往敵國和親骤视。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354