03-初識JavaScript

一. JavaScript簡介(瞭解)

  1. JavaScript的歷史背景介紹

    布蘭登 • 艾奇(Brendan Eich,1961年~),1995年在網景公司,發明的JavaScript。javascript

    一開始JavaScript叫作LiveScript,可是因爲當時Java這個語言特別火,因此爲了傍大牌,就更名爲JavaScript。如同「北大」和「北大青鳥」的關係。「北大青鳥」就是傍「北大」大牌。html

    同時期還有其餘的網頁語言,好比VBScript、JScript等等,可是後來都被JavaScript戰勝了,因此如今的瀏覽器中,只運行一種腳本語言就是JavaScript。java

  2. JavaScript和ECMAScript的關係

    ECMAScript是一種由ECMA國際(前身爲歐洲計算機制造商協會,英文名稱是European Computer Manufacturers Association)制定的標準。python

    JavaScript是由公司開發而成的,問題是不便於其餘的公司拓展和使用。因此歐洲的這個ECMA的組織,牽頭制定JavaScript的標準,取名爲ECMAScript。程序員

    簡單來講,ECMAScript不是一門語言,而是一個標準。符合這個標準的比較常見的有:JavaScript、Action Script(Flash中用的語言)。就是說,你JavaScript學完了,Flash中的程序也就垂手可得了。es6

    ECMAScript在2015年6月,發佈了ECMAScript 6版本,語言的能力更強(也包含了不少新特性)。可是,瀏覽器的廠商不能那麼快去追上這個標準。數據庫

   3. JavaScript入門易學性

    • JavaScript對初學者比較友好。編程

    • JavaScript是有界面效果的(好比C語言只有白底黑字)。數組

    • JavaScript不用關心其餘的一些事情(好比內存的釋放、指針等),更關心本身的業務。
    • JavaScript是弱變量類型的語言,變量只須要用var來聲明。而Java中變量的聲明,要根據變量的類型來定義。瀏覽器

    好比Java中須要定義以下變量:

int a; float a; String a; ...

    而JavaScript中,只用定義一個變量:

var a;

  4. JavaScript是前臺語言

    JavaScript是前臺語言,而不是後臺語言。

    JavaScript運行在用戶的終端網頁上,而不是服務器上,因此咱們稱爲「前臺語言」。JavaScript就是一個簡單的製做頁面效果的語言,就是服務於頁面的交互效果、美化、絢麗、不能操做數據庫。

    後臺語言是運行在服務器上的,好比python、PHP等等,這些語言都可以操做數據庫,都可以對數據庫進行「增刪改查」操做。Node.js除外。

  5. JavaScript的組成

    JavaScript基礎分爲三個部分:

      • ECMAScript:JavaScript的語法標準。包括變量、表達式、運算符、函數、if語句、for語句等。

      • DOM:操做網頁上的元素的API。好比讓盒子移動、變色、輪播圖等。

      • BOM:操做瀏覽器部分功能的API。好比讓瀏覽器自動滾動。

    PS:JS機械重複性的勞動幾乎爲0,基本都是創造性的勞動。而不像HTML、CSS中margin、padding都是機械重複勞動。

  6. JavaScript的特色

    • 簡單易用:可使用任何文本編輯工具編寫,只須要瀏覽器就能夠執行程序。

    • 解釋執行(解釋語言):事先不編譯、逐行執行、無需進行嚴格的變量聲明。

    • 基於對象:內置大量現成對象,編寫少許程序能夠完成目標

 二. 初識JavaScript代碼

  在頁面中,咱們能夠在body標籤中放入<script type="text/javascript"></script>標籤對兒。

<script type="text/javascript">
    
</script>

  1. 語法規則

    學習程序,是有規律可循的,就是程序是有相同的部分,這些部分就是一種規定,不能更改,咱們稱之爲:語法。

    • JavaScript對換行、縮進、空格不敏感。

           備註:每一條語句末尾要加上分號,雖然分號不是必須加的,可是爲了程序從此要壓縮,若是不加分號,壓縮以後將不能運行。

    • 全部的符號,都是英語的。好比括號、引號、分號。

    • JavaScript的註釋:

      單行註釋:

// 單行註釋

      多行註釋:

/* 我是多行註釋 我是多行註釋 我是多行註釋 */

    備註:pycharm中,單行註釋的快捷鍵是Ctrl+/,多行註釋的快捷鍵是Ctrl+Shift+/。

  2. JavaScript在網頁中輸出信息的寫法

    a. 彈出警告框:alert語句

    語法:alert("");

<script type="text/javascript"> alert("小姐姐,你好啊!") </script>

    alert(英文翻譯爲「警報」)的用途:彈出「警告框」

    b. 控制檯輸出:console.log("")

    console.log("") 表示在控制檯中輸出。console表示「控制檯」,log表示「輸出」。

    控制檯在Chrome瀏覽器的F12中。控制檯是工程師、程序員調試程序的地方。程序員常用這條語句輸出一些東西,來測試程序是否正確。

  3. 用戶輸入語句

    prompt() 就是專門用來彈出可以讓用戶輸入的對話框。

    代碼以下:

<script type="text/javascript">
    var a = prompt("今日天氣如何?"); console.log(a); </script>

    上方代碼中,用戶輸入的內容,將被傳遞到變量 a 裏面。

    效果以下:

    f12打開控制檯查看結果。

    prompt()語句中,用戶無論輸入什麼內容,都是字符串。

    alert和prompt的區別:

alert("從前有座山");                //直接使用,不須要變量
var a = prompt("請輸入一個數字");   // 必須用一個變量,來接收用戶輸入的值

  4. 直接量:數字和字符串

    「直接量」即常量,也稱爲「字面量」。看見什麼,它就是什麼。

    簡單的直接量有2種:數字、字符串。

    (1)、數值的直接量的表達很是簡單,寫上去就好了,不須要任何的符號。例如:

alert(886);  //886是數字,因此不須要加引號。

    (2)、字符串也很簡單,但必定要加上引號。能夠是單詞、句子等。例如:

alert("Hello"); alert("Hello world");

  5. 變量的定義和賦值

    var是英語「variant」變量的縮寫。後面要加一個空格,空格後面的東西就是「變量名」,

    • 定義變量:var就是一個關鍵字,用來定義變量。所謂關鍵字,就是有特殊功能的小詞語。關鍵字後面必定要有空格隔開。

    • 變量的賦值:等號表示賦值,將等號右邊的值,賦給左邊的變量。

    • 變量名:咱們能夠給變量任意的取名字。

     PS:在JavaScript中,永遠都是用var來定義變量,這和C、Java等語言不一樣(有興趣的同窗能夠看一下es6)

    變量要先定義,才能使用。好比,咱們不設置變量,直接輸出:

<script type="text/javascript"> console.log(a); </script>

    控制檯將會報錯:

    正確寫法:

var a;   // 定義
a = 100;  //賦值
console.log(a);  //輸出100

    有經驗的程序員,會把定義和賦值寫在一塊兒:

var a = 100;    //定義,而且賦值100
console.log(a);  //輸出100

  6. 變量的命名規範

    變量名有命名規範:只能由英語字母、數字、下劃線、美圓符號$構成,且不能以數字開頭,而且不能是JavaScript保留字。

    下列的單詞,叫作保留字,就是說不容許當作變量名(不用記):

abstract、booleanbytechar、class、const、debuggerdouble、enum、export、extends、final、float、goto implements、import、int、interface、long、native、package、private、protected、public、short、static、super、
synchronized、throws、transient、volatile

    大寫字母是可使用的,而且大小寫敏感。也就是說A和a是兩個變量。

var A = 250;    //變量1
var a = 888;    //變量2

三. 數據類型

  數據類型包括:基本數據類型和引用數據類型

  基本數據類型指的是簡單的數據段,引用數據類型指的是有多個值構成的對象。

  當咱們把變量賦值給一個變量時,解析器首先要確認的就是這個值是基本類型值仍是引用類型值

   1. 基本數據類型

    在講數據類型以前,咱們要學習一個函數 typeof 表示「獲取變量的類型」,語法爲:

typeof 變量名稱

    3.1.1. number數值類型

var a = 123; //typeof 檢查當前變量是什麼數據類型
console.log(typeof a)

    在JavaScript中,只要是數,就是數值型(number)的。不管整浮、浮點數(即小數)、不管大小、不管正負,都是number類型的。

    3.1.2. string字符串類型

var a = "abcde"; var b = "路飛"; var c = "123123"; var d = "哈哈哈哈哈"; var e = "";     //空字符串
 console.log(typeof a); console.log(typeof b); console.log(typeof c); console.log(typeof d); console.log(typeof e);

    3.1.3. boolean布爾類型

var b1 = false; console.log(typeof b1)

    3.1.4. null空對象類型

var c1 = null;//空對象 object
console.log(c1)

    3.1.5. undefined未定義類型

var d1; //表示變量未定義
console.log(typeof d1)

  2. 引用數據類型

    • Function
    • Object
    • Array
    • String
    • Date

    後面課程會講解。

四. 運算符

  js中的運算符跟python中的運算符有點相似,但也有不一樣。所謂運算,在數學上,是一種行爲,經過已知量的組合,得到新的量。

  1. 賦值運算符

    以var x = 12,y=5來演示示例:

  2. 算術運算符

    var a = 5,b=2

  3. 比較運算符

    var x = 5;

 

  4. 特殊狀況

    字符串拼接+字符串運算 特殊狀況。

var firstName = '小'; var lastName = '姐姐'; var name = '伊拉克'; var am = '美軍'; // 字符串拼接
var tempStr = "2003年3月20日," + name + "戰爭爆發,以美軍爲主的聯合部隊僅用20多天就擊潰了薩達姆的軍隊。這是繼十多年前的海灣戰爭後," + am + "又一次取得的大規模壓倒性軍事勝利。" console.log(tempStr); var fullName = firstName + " " + lastName; console.log(fullName);
// 不能對字符串進行+運算 只能拼接
var a1 = '1'; var a2 = '2'; console.log(a1+a2) //12字符串類型
var b1 = 'one'; var b2  = 'two'; // NaN ==== not a number 是number類型
console.log(b1*b2)  // NaN
console.log(typeof(b1*b2))  // number

五. 數據類型轉換

  1. 將數值類型轉換爲字符串類型

    number -----> string

    a. 隱式轉換
var n1 = 123; var n2 = '456'; var n3 = n1+n2; // 隱式轉換
console.log(typeof n3);
    b. 強制類型轉換
var n1 = 123; // 強制類型轉換String(),toString()
var str1 = String(n1); console.log(typeof str1); var num = 234; console.log(num.toString())

  2. 將字符串類型轉換成數值類型

    string -----> number

var strNum = "123.45dfsdfsd"; var num = Number(strNum); console.log(num); // NaN
console.log(typeof num);  // number

// parseInt()能夠解析一個字符串 而且返回一個整數
console.log(parseInt(strNum);  // 123
console.log(typeof(parseInt(strNum)));  // number

// parseFloat()能夠解析一個字符串 而且返回一個浮點數
console.log(parseFloat(strNum);  // 123.45
console.log(typeof(parseFloat(strNum)));  // number

  3. 任何數據類型均可以轉爲布爾類型

     * -----> boolean

var num1 = 123; var num2 = 0; var num3 = -123; var a1 = NaN; var a2; var a3 = null; // 數字非零即爲真。
console.log(Boolean(num1);  // true
console.log(Boolean(num2);  // false
console.log(Boolean(num3);  //true
 console.log(Boolean(a1); // false
console.log(Boolean(a2);  // false
console.log(Boolean(a3);  // false

六. 流程控制

  1. if控制語句

var age = 18; if (age >= 18){ console.log("恭喜你,能夠去會所了!"); } console.log(111);
var age = 18; if (age >= 18){ console.log("恭喜你,能夠去會所了!"); }else{ console.log("好好上學吧!"); }
var age = 18; if (age >= 18){ console.log("恭喜你,能夠去會所了!"); }else if(age<6){ console.log("好好玩耍吧!"); }else{ console.log("好好上學吧!"); }

    語法:

if (true) { //知足條件執行
}else if(true){ //知足條件執行 
}else if(true){ //知足條件執行 
}else{ //知足條件執行
}

  2. 邏輯運算符(與或非)

與:&& 或:|| 非:!
var sex = "女"; var age = 18; var hobby = "吹管樂"; var flag = false; // 是否婚配

if (age == 18 && sex == "女") { console.log("妙齡少女"); } if (age == 18 || hobby == "吹管樂") { console.log("湊合吧"); } if (!flag){ console.log("這是機會。"); }

  3. switch語句

var age = 18; switch (age) { //case表示一個條件 知足這個條件就會走進來 遇到break跳出。若是某個條件中不寫 break,那麼直到該程序遇到下一個break中止
    case 18: console.log("能夠去會所了。"); break; case 60: console.log("您老仍是回家吧!"); break; default: console.log("好好學習。") }

  4. while循環

    循環三步走:

      1.初始化循環變量

      2.判斷循環條件

      3.更新循環變量

var i = 1; //初始化循環變量

while(i<=9){ //判斷循環條件
 console.log(i); i++; //更新循環條件 等同於i=i+1
}

    小練習:將1-100全部是2的倍數在控制檯中打印。使用while循環實現。

  5. do___while

//無論有沒有知足while中的條件do裏面的代碼都會走一次
var i = 3;//初始化循環變量
do{ console.log(i) i++;//更新循環條件
 }while (i<10) //判斷循環條件

  6. for循環

for(var i = 1;i<=10;i++){ console.log(i) }

    課堂練習:

// 打印1--100的偶數。
for(var i = 1;i<=100;i++){ if(i%2==0){ //是偶數
 console.log(i) } }

    雙重for循環

for (var i = 1; i <= 5; i++) { // 行數
        for (var j = 0; j < 6; j++) {// 每行的列數
            document.write('*') } document.write('<br>') }

    效果:

    小做業:

      1.在瀏覽器中輸出直角三角形

*
**
***
****
*****
for (var i = 1; i <= 5; i++) { // 行數
    for (var j = 0; j < i; j++) {// 每行的列數
        document.write('*') } document.write('<br>') }
參考代碼

      2.在瀏覽器中輸出等腰三角形

*
   ***
  *****
 *******
*********
for (var i = 1; i <= 5; i++) { // 行數
    //控制咱們的空格數
    for (var s = i; s < 5; s++) { document.write('&nbsp;') } for (var j = 1; j <= 2 * i - 1; j++) { document.write('*') } document.write('<br>') }
參考代碼

七. 經常使用內置對象

  所謂內置對象就是ECMAScript提供出來的一些對象,咱們知道對象都是有相應的屬性和方法

  1. 數組Array

    a. 數組的建立方式
    • 字面量方式建立(推薦你們使用這種方式,簡單粗暴)
var arr = ["alex", "egon", "yuan"];
    • 使用構造函數(後面會講)的方式建立 使用new關鍵詞對構造函數進行建立對象
var arr = new Array();

  2. 數組的賦值

var arr = []; //經過下標進行一一賦值
arr[0] = 123; arr[1] = '哈哈哈'; arr[2] = '嘿嘿嘿'

  3. 數組的經常使用方法

    3.1 數組的合併 concat()
var north = ['北京','山東','天津']; var south = ['東莞','深圳','上海']; var newCity = north.concat(south); console.log(newCity)
    3.2 join() 將數組中的元素使用指定的字符串鏈接起來,它會造成一個新的字符串
var score = [98,78,76,100,0]; var str = score.join('|'); console.log(str);//98|78|76|100|0
    3.3 將數組轉換成字符串 toString()
var score = [98,78,76,100,0]; //toString() 直接轉換爲字符串 每一個元素之間使用逗號隔開
           
var str = score.toString(); console.log(str);//98,78,76,100,0
    3.4 slice(start,end); 返回數組的一段,左閉右開
var arr = ['張三','李四','王五','趙六']; var newArr  = arr.slice(1,3); console.log(newArr);//["李四", "王五"]
    3.5 pop 刪除數組的最後一個元素並返回刪除的元素
var arr = ['張三', '李四', '王五', '趙六']; var item = arr.pop(); console.log(arr);//["張三", "李四","王五"]
console.log(item);//趙六
    3.6 push() 向數組末尾添加一個元素或多個元素,並返回新的長度
var arr = ['張三', '李四', '王五', '趙六']; var newLength = arr.push('鐵蛋');//能夠添加多個,以逗號隔開
console.log(newLength);//5
console.log(arr);  //["張三", "李四", "王五", "趙六", "鐵蛋"]
    3.7 reverse() 翻轉數組
var arr = ['張三', '李四', '王五', '趙六']; //反轉數組
arr.reverse(); console.log(arr);
    3.8 sort對數組排序
var names = ["alex", "yuan", "wusir", "egon"]; names.sort(); console.log(names); // ["alex", "egon", "wusir", "yuan"]
    3.9 判斷是否爲數組:isArray()
布爾類型值 = Array.isArray(被檢測的值);
    3.10 shift() 刪除數組第一個元素並返回該元素
var names = ["alex", "yuan", "wusir", "egon"]; var a = names.shift(); console.log(a); // "alex"
console.log(names);  // ["yuan", "wusir", "egon"]
    3.11 unshift() 向數組的開頭添加一個或更多元素,並返回新的長度
var names = ["alex", "yuan", "wusir", "egon"]; var newLength = names.unshift('鐵蛋');//能夠添加多個,以逗號隔開
console.log(newLength);//5
console.log(names); //["鐵蛋", "alex", "yuan", "wusir", "egon"]

  4. 字段串String

    字符串方法

    4.1 chartAt() 返回指定索引的位置的字符
var str = 'alex'; var charset = str.charAt(2); console.log(charset);//e
    4.2 concat 返回字符串值,表示兩個或多個字符串的拼接
var str1 = 'al'; var str2  = 'ex'; console.log(str1.concat(str2,str2));//alexex
    4.3 replace(a,b) 將字符串a替換成字符串b
var a = '1234567755'; var newStr = a.replace("4567","****"); console.log(newStr);//123****755
    4.4 indexof() 查找字符的下標,若是找到返回字符串的下標,找不到則返回-1 。跟seach()方法用法同樣
var str = 'alex'; console.log(str.indexOf('e'));//2
console.log(str.indexOf('p'));//-1
    4.5 slice(start,end) 提取一個字符串的一部分,並返回一新的字符串。左閉右開 分割字符串
var str = 'egon'; console.log(str.slice(1,2)); //g
    4.6 split('a',1) 以字符串a分割字符串,並返回新的數組。若是第二個參數沒寫,表示返回整個數組,若是定義了個數,返回新數組(數組裏的元素個數就是定義的個數)。
var  str =  '個人天呢,a是嘛,你在說什麼呢?a哈哈哈'; console.log(str.split('a'));  // ["個人天呢,", "是嘛,你在說什麼呢?", "哈哈哈"]
console.log(str.split('a', 2));  // ["個人天呢,", "是嘛,你在說什麼呢?"]
    4.7 substr(start,length) 返回一個字符串中從指定位置開始到指定字符數的字符。
var  str =  '個人天呢,a是嘛,你在說什麼呢?a哈哈哈'; console.log(str.substr(0,4));//個人天呢
    4.8 toLowerCase()轉小寫
var str = 'XIAOMI'; console.log(str.toLowerCase()); //xiaomi
    4.9 toUpperCase()轉大寫
var str = 'xiaomi'; console.log(str.toUpperCase()); // XIAOMI
    4.10 trim() 去除字符串兩邊的空白
var name = "   alex   "; console.log(name); //" alex "
console.log(name.trim()); // "alex"

    特別:

// 四捨五入
var num = 132.62522; var newNum1 = num.toFixed(); console.log(newNum1); //133
var newNum2 = num.toFixed(2); console.log(newNum2); //132.63

  5. Date日期對象

    建立日期對象只有構造函數一種方式,使用new關鍵字

//建立了一個date對象
var myDate = new Date();

//建立日期對象
var myDate=new Date(); console.log(myDate.getDate()); console.log(myDate.toLocaleString());

  6. Math內置對象

    經常使用內置對象

    6.1 Math.ceil() 向上取整,'天花板函數'
var x = 1.234; //天花板函數 表示大於等於 x,而且與它最接近的整數是2
var a = Math.ceil(x); console.log(a);//2
    6.2 Math.floor 向下取整,'地板函數'
var x = 1.234; // 小於等於 x,而且與它最接近的整數 1
var b = Math.floor(x); console.log(b);//1
    6.3 求兩個數的最大值和最小值
//求 兩個數的最大值 最小值
console.log(Math.max(2,5));//5
console.log(Math.min(2,5));//2
    6.4 隨機數 Math.random()
var ran = Math.random(); console.log(ran);[0,1]之間的隨機小數

    若是讓你取100-200之間的隨機數,怎麼作?

    背過公式:min - max之間的隨機數: min+Math.random()*(max-min)

  以上是我們介紹的JS經常使用對象的方法,若是想參考更多內容,請參考連接:http://www.runoob.com/jsref/jsref-tutorial.html

 八. 函數

  函數:就是將一些語句進行封裝,而後經過調用的形式,執行這些語句。

  函數的做用:

    • 將大量重複的語句寫在函數裏,之後須要這些語句的時候,能夠直接調用函數,避免重複勞動。

    • 簡化編程,讓編程模塊化。

console.log("hello world"); sayHello(); //調用函數 //定義函數:
function sayHello(){ console.log("hello"); console.log("hello world"); }

  1. 第一步定義函數

    函數定義的語法:

function 函數名字(){ //函數體內容 
}

    解釋以下:

      • function:是一個關鍵字。中文是「函數」、「功能」。

      • 函數名字:命名規定和變量的命名規定同樣。只能是字母、數字、下劃線、美圓符號,不能以數字開頭。

      • 參數:後面有一對小括號,裏面是放參數用的。

      • 大括號裏面,是這個函數的語句。

  2. 函數的調用

    函數調用的語法:

函數名字();

  3. 函數的參數

    函數的參數包括形參和實參

    注意:實際參數和形式參數的個數,要相同。

    例子:

sum(3, 4); sum("3", 4); sum("Hello", "World"); //函數:求和
function sum(a, b) { console.log(a, b); console.log(arguments); console.log(a + b); }

  4. 函數的返回值

    例子:

console.log(sum(3, 4)); //函數:求和
function sum(a, b) { return a + b; }

九. 僞數組 arguments

  arguments表明的是實參。有個講究的地方是:arguments只在函數中使用

  (1)返回函數實參的個數:arguments.length

  例子:

fn(2,4); fn(2,4,6); fn(2,4,6,8); function fn(a,b,c) { console.log(arguments); console.log(fn.length); //獲取形參的個數
    console.log(arguments.length);  //獲取實參的個數
 console.log("----------------"); }

  結果:

  (2)之因此說arguments是僞數組,是由於:arguments能夠修改元素,但不能改變數組的長短。舉例:

fn(2,4); fn(2,4,6); fn(2,4,6,8); function fn(a,b) { arguments[0] = 99;  //將實參的第一個數改成99
    arguments.push(8);  //此方法不經過,由於沒法增長元素,會報錯
}

  清空數組的幾種方式:

var array = [1,2,3,4,5,6]; array.splice(0);      //方式1:刪除數組中全部項目
array.length = 0;     //方式2:length屬性能夠賦值,在其它語言中length是隻讀
array = [];           //方式3:推薦
相關文章
相關標籤/搜索