日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

web基础学习

發(fā)布時(shí)間:2023/12/18 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web基础学习 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第3章 web基礎(chǔ)之JavaScript

0.1瀏覽器簡介

瀏覽器是指可以顯示網(wǎng)頁服務(wù)器或者文件系統(tǒng)的HTML文件(標(biāo)準(zhǔn)通用標(biāo)記語言的一個(gè)應(yīng)用)內(nèi)容,并讓用戶與這些文件交互的一種軟件。

國內(nèi)網(wǎng)民計(jì)算機(jī)上常見的網(wǎng)頁瀏覽器有,QQ瀏覽器、Internet Explorer、Firefox、Safari,Opera、Google Chrome、百度瀏覽器、搜狗瀏覽器、獵豹瀏覽器、360瀏覽器、UC瀏覽器、傲游瀏覽器、世界之窗瀏覽器等,瀏覽器是最經(jīng)常使用到的客戶端程序。

常用的五大瀏覽器:chrome,firefox,Safari,ie,opera;

我們用的最多的則是 chrome(谷歌瀏覽器) 和 Firefox(火狐瀏覽器)

0.2 編輯器

Sublime Text、VSCode、Atom、Brackets、WebStorm、Notepad++、HBuilder、Vim、記事本…

0.3JavaScript語言的強(qiáng)大

http://impress.github.io/impress.js/
http://naotu.baidu.com/
http://echarts.baidu.com/index.html

總結(jié):

擺正學(xué)習(xí)心態(tài);編程基本功要練好;編程使用的工具要熟悉且順手;我們要學(xué)的 JavaScript 很強(qiáng)大;

第1章 JavaScript介紹

1.1 JavaScript編程語言

JavaScript,簡稱JS,是一種客戶端腳本語言,主要用來向HTML網(wǎng)頁添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果。

可以直接嵌入HTML頁面,但寫成單獨(dú)的js文件有利于結(jié)構(gòu)和行為的分離。

在絕大多數(shù)瀏覽器的支持下,可以在多種平臺(tái)下運(yùn)行(如Windows、Linux、Mac、Android、iOS等)

JS主要運(yùn)行于客戶端(瀏覽器),也可以運(yùn)行在服務(wù)端(操作系統(tǒng))

JavaScript 和 Java 是兩種不同的編程語言:JavaScript主要用于客戶端,Java用于服務(wù)端。

JavaScript現(xiàn)在的意義(應(yīng)用場景)

JavaScript 發(fā)展到現(xiàn)在幾乎無所不能。

  • 網(wǎng)頁特效
  • 服務(wù)端開發(fā)(Node.js)
  • 命令行工具(Node.js)
  • 桌面程序(Electron)
  • App(Cordova)
  • 控制硬件-物聯(lián)網(wǎng)(Ruff)
  • 游戲開發(fā)(cocos2d-js)
  • 1.2 發(fā)展及歷史

    1994年Netscape公司推出免費(fèi)版本瀏覽器 Netscape Navigator(網(wǎng)景瀏覽器1.0)
    1995年微軟公司發(fā)布 Internet Explorer 1.0。
    1995年網(wǎng)景公司為適應(yīng)市場變化,需要開發(fā)一門專門在瀏覽器運(yùn)行的腳本語言,這個(gè)任務(wù)交給了布蘭登,為了應(yīng)付公司安排的任務(wù),
    他只用10天時(shí)間就提交了工作,并將這門語言命名為 LiveScript;
    后來為了蹭sun公司java的熱度,與sun公司合作,將其臨時(shí)改名為“JavaScript”;
    1996年8月,微軟模仿JavaScript開發(fā)了一種相近的語言,取名為JScript,首先內(nèi)置于IE 3.0
    1997年7月,ECMA組織發(fā)布ECMAScript 1.0版;
    此后,明爭暗斗不斷,1998年6月,ECMAScript 2.0版發(fā)布,1999年12月,ECMAScript 3.0版發(fā)布;
    2007年10月,ECMAScript 4.0版草案發(fā)布,2008年7月中止ECMAScript 4.0的開發(fā),并發(fā)布3.1版本;
    會(huì)后不久,ECMAScript 3.1就改名為ECMAScript 5。
    2011年6月,ECMAscript 5.1版發(fā)布,現(xiàn)在使用最為廣泛的版本 版發(fā)布,現(xiàn)在使用最為廣泛的版本;
    2015年6月,ECMAScript 6正式發(fā)布,并且更名為“ECMAScript 2015”;
    隨后,ECMA組織決定,每年發(fā)布一個(gè)升級(jí)版本,以年號(hào)來代替版本號(hào),如:ECMAScript 2016、ECMAScript 2017;

    另外:
    1996年,樣式表標(biāo)準(zhǔn)CSS第一版發(fā)布;
    1997年,DOM模式第一版正式應(yīng)用,目前的通用版本是DOM3,下一代版本DOM 4正在擬定中。
    1999年,IE5部署了XMLHttpRequest接口,允許JavaScript發(fā)出HTTP請(qǐng)求;
    2001年,提出了JSON格式,用于取代XML格式。
    2002年,Mozilla項(xiàng)目發(fā)布第一版Firefox。
    2003年,蘋果公司發(fā)布了Safari瀏覽器的第一版。
    2006年,jQuery函數(shù)庫誕生
    2007年,Webkit引擎在iPhone手機(jī)中得到部署;
    2008年,為Chrome瀏覽器而開發(fā)的V8編譯器(解析引擎)誕生;
    2009年,基于V8解析引擎的Node.js項(xiàng)目誕生,迎來前后端JS的霸權(quán)時(shí)代;
    2009年,Google發(fā)布Chrome OS
    2009年,Google發(fā)布Angular框架;
    2013年,Mozilla基金會(huì)發(fā)布手機(jī)操作系統(tǒng)Firefox OS,該操作系統(tǒng)的整個(gè)用戶界面都使用JavaScript;
    2013年5月,Facebook發(fā)布UI框架庫React;
    2014年,尤雨溪發(fā)布開源前端開發(fā)庫Vue.js;
    2015年3月,Facebook公司發(fā)布了 React Native項(xiàng)目;

    1.3 JavaScript和HTML、CSS

  • HTML:提供網(wǎng)頁的結(jié)構(gòu),提供網(wǎng)頁中的內(nèi)容

  • CSS: 用來樣式排版、美化網(wǎng)頁

  • JavaScript: 可以用來控制網(wǎng)頁內(nèi)容,給網(wǎng)頁增加動(dòng)態(tài)的效果

  • 1.4 JavaScript的組成

    ECMA 歐洲計(jì)算機(jī)制造聯(lián)合會(huì);
    ECMAScript 是一套標(biāo)準(zhǔn),定義了一種語言的標(biāo)準(zhǔn),規(guī)定了基本語法、數(shù)據(jù)類型、關(guān)鍵字、具體API的設(shè)計(jì)規(guī)范等,解析引擎設(shè)計(jì)的參考標(biāo)準(zhǔn),但與具體實(shí)現(xiàn)無關(guān);

    1.4.1 ECMAScript - JavaScript的核心

    ECMAScript是一套語法標(biāo)準(zhǔn),描述了JavaScript語言的基本語法和數(shù)據(jù)類型,是JavaScript的核心。 ES5 ES6

    1.4.2 BOM - 瀏覽器對(duì)象模型

    一套操作瀏覽器功能的API

    通過BOM可以操作瀏覽器窗口,比如:彈出框、控制瀏覽器跳轉(zhuǎn)、獲取分辨率等

    1.4.3 DOM - 文檔對(duì)象模型

    一套操作頁面元素的API

    DOM可以把HTML看做是文檔樹,通過DOM提供的API可以對(duì)樹上的節(jié)點(diǎn)進(jìn)行操作

    1.5 JS學(xué)習(xí)概況

    我們?cè)趯W(xué)習(xí)JS時(shí),需要學(xué)習(xí)的內(nèi)容分為兩部分,語言結(jié)構(gòu)宿主環(huán)境提供的API;

    語言結(jié)構(gòu)部分主要時(shí)語言規(guī)則及內(nèi)置對(duì)象;

    而宿主環(huán)境的API,根據(jù)宿主環(huán)境不同而不同,以瀏覽器為例(js還可以運(yùn)行在服務(wù)器/操作系統(tǒng)),最常見的三個(gè)類型:
    瀏覽器控制類、DOM操作類、網(wǎng)絡(luò)控制類;

    總結(jié):

    JavaScript編程語言簡稱 JS,是一種嵌入式的腳本語言,應(yīng)用范圍及其廣泛,由布蘭登-艾奇開發(fā),在20+年的發(fā)展中歷經(jīng)滄桑,學(xué)習(xí) JS 分為語言規(guī)則及宿主環(huán)境兩部分;

    第2章 入門

    2.1 如何寫一段JS代碼并運(yùn)行

    • 寫在行內(nèi)
    01.html: <input type="button" value="按鈕" onclick="alert('Hello World')" />
    • 寫在script標(biāo)簽中 *
    02.html: <head><script>alert('Hello World!');</script> </head>
    • 寫在外部js文件中,在頁面引入
    03.html: <script src="main.js"></script> main.js:alert('Hello World!');

    注意點(diǎn): 引用外部js文件的 script 標(biāo)簽中不可以再寫JavaScript代碼,即使寫了也不會(huì)執(zhí)行,沒有作用

    2.3 變量

    2.3.1 什么是變量

    • 什么是變量

      變量是計(jì)算機(jī)內(nèi)存中存儲(chǔ)數(shù)據(jù)的標(biāo)識(shí)符,根據(jù)變量名稱可以獲取到內(nèi)存中存儲(chǔ)的數(shù)據(jù)

    • 為什么要使用變量

      使用變量可以方便的獲取或者修改內(nèi)存中的數(shù)據(jù)

    變量就是存儲(chǔ)數(shù)據(jù)的容器;

    2.3.2 如何使用變量

    • var聲明變量
    var age;
    • 變量的賦值
    var age; age = 18;
    • 同時(shí)聲明多個(gè)變量
    var age, name, sex; age = 10; name = 'zs';
    • 同時(shí)聲明多個(gè)變量并賦值
    var age = 10, name = 'zs';

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

    • 規(guī)則 - 不遵守會(huì)報(bào)錯(cuò)

      • 由字母、數(shù)字、下劃線、$符號(hào)組成,且不能以數(shù)字開頭

      • 區(qū)分大小寫

      • 不能是關(guān)鍵字和保留字,例如:for、while。

    • 規(guī)范 - 不遵守不會(huì)報(bào)錯(cuò)

      • 變量名必須有意義
      • 遵守駝峰命名法。(首字母小寫,后面單詞的首字母需要大寫。例如:userName、userPassword)
    • 下面哪些變量名不合法

      a 1 age18 18age name $ $name _sex &sex theworld theWorld

    name變量名,本身不是保留字/關(guān)鍵字, 建議少用。 name在有的瀏覽器中,是自動(dòng)聲明過的。

    2.3.4 案例

  • 交換兩個(gè)變量的值
  • var a = '1'; var b = '2'; // 借助第三個(gè)變量 var c = a; a=b; b=c; console.log(a,b);
  • 不使用臨時(shí)變量,交換兩個(gè)數(shù)值變量的值
  • //第二種方式 var num1 = 10; var num2 = 20; //計(jì)算的方式:累加,然后相減 num1 = num1 + num2;//num1的結(jié)果是30 num2 = num1 - num2;//num2的結(jié)果是10 num1 = num1 - num2;//num1的結(jié)果是20 console.log(num1); console.log(num2);

    2.3.5 代碼調(diào)試(輸出變量)

  • alert 彈框 :瀏覽器頁面彈框
  • var num1 = 10; alert(num1);
  • console.log() 瀏覽器console控制臺(tái)
  • var num1 = 10; var num2 = 20; console.log(num1); console.log(num1, num2);
  • document.write() 瀏覽器頁面中
  • var num1 = 10; document.write(num1);

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

    2.4.1 簡單數(shù)據(jù)類型

    Number、String、Boolean、Undefined、Null

    獲取變量的類型

    typeof

    var age = 18; console.log(typeof age); // 'number'
    Number類型
    • 數(shù)值字面量:數(shù)值的固定值的表示法(數(shù)值直接量)

      110 1024 60.5

    • 浮點(diǎn)數(shù)(小數(shù))

    • 浮點(diǎn)數(shù)的精度問題

    浮點(diǎn)數(shù)var n = 5e-324; // 科學(xué)計(jì)數(shù)法 5乘以10的-324次方 浮點(diǎn)數(shù)值的最高精度是 17 位小數(shù),但在進(jìn)行算術(shù)計(jì)算時(shí)其精確度遠(yuǎn)遠(yuǎn)不如整數(shù)var result = 0.1 + 0.2; // 結(jié)果不是 0.3,而是:0.30000000000000004console.log(0.07 * 100);不要判斷兩個(gè)浮點(diǎn)數(shù)是否相等
    • 數(shù)值范圍

      最小值:Number.MIN_VALUE// 這個(gè)值為: 5e-324 5乘以10的-324次方 最大值:Number.MAX_VALUE// 這個(gè)值為: 1.7976931348623157e+308 無窮大:Infinity 無窮小:-Infinity
    String類型
    • 字符串字面量(直接量)

    • ‘a(chǎn)bc’ “abc” 單雙引號(hào)引起來的一連串字符

      注: 轉(zhuǎn)義后單雙引號(hào) 只能 就近和轉(zhuǎn)義后的單雙引號(hào)進(jìn)行配對(duì)

    • 轉(zhuǎn)義符

    注: \b 退格符 \f又叫走紙或進(jìn)紙或 換頁符

    var s = '我很喜歡 \"黑馬 \'程序猿\' \"'; console.log(s);
    • 字符串長度

    length屬性用來獲取字符串的長度

    var str = '黑馬程序猿 Hello World'; console.log(str.length);
    • 字符串拼接

    字符串拼接使用 + 連接

    console.log(11 + 11); console.log('hello' + ' world'); console.log('100' + '100'); console.log('11' + 11); console.log('male:' + true);
  • 兩邊只要有一個(gè)是字符串,那么+就是字符串拼接功能
  • 兩邊如果都是數(shù)字,那么就是算術(shù)功能。
  • Boolean類型
    • Boolean字面量: true和false,區(qū)分大小寫
    • 計(jì)算機(jī)內(nèi)部存儲(chǔ):true為1,false為0
    Undefined和Null
  • undefined表示一個(gè)聲明了沒有賦值的變量,變量只聲明的時(shí)候值默認(rèn)是undefined
  • null表示一個(gè)空,變量的值如果想為null,必須手動(dòng)設(shè)置
  • 注: 關(guān)于undefined和null是一個(gè)面試中很容易被問到的問題

    2.4.2 復(fù)雜數(shù)據(jù)類型

    ? Object 對(duì)象:保存很多數(shù)據(jù)的一種數(shù)據(jù)類型

    console.log('ss',2,null,undefined,true);

    2.5 注釋

    被注釋的內(nèi)容是不執(zhí)行的,不管什么內(nèi)容都不會(huì)運(yùn)行;

    單行注釋

    用來描述下面一個(gè)或多行代碼的作用

    // 這是一個(gè)變量 var name = 'hm';

    多行注釋

    用來注釋多條代碼

    /* var age = 18; var name = 'zs'; console.log(name, age); */

    總結(jié):

    JS代碼的書寫,變量的聲明方式,數(shù)據(jù)類型,注釋;

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

    3.1 轉(zhuǎn)換成字符串類型

    • toString()

      var num = 5; console.log(num.toString());
    • String()

      var s = null; console.log(s.toString()); console.log(String(s));// String()函數(shù)存在的意義:有些值沒有toString(), // 這個(gè)時(shí)候可以使用String()。比如:undefined和null
    • 拼接字符串方式

      num + “”,當(dāng) + 兩邊一個(gè)操作符是字符串類型,一個(gè)操作符是其它類型的時(shí)候,會(huì)先把其它類型轉(zhuǎn)換成字符串再進(jìn)行字符串拼接,返回字符串

    3.2 轉(zhuǎn)換成數(shù)值類型

    • Number()

      var a = Number('1'); var b = Number(1); var c = Number('c'); var d = Number(null); var e = Number(undefined);console.log(a,b,c,d,e); // 1 1 NaN 0 NaN// Number()可以把任意值轉(zhuǎn)換成數(shù)值,如果要轉(zhuǎn)換的字符串中有一個(gè)不是數(shù)值的字符,返回NaN
    • parseInt()

      var a = parseInt('1.2df'); var b = parseInt(1); var c = parseInt('c12'); var d = parseInt(null); var e = parseInt(undefined);console.log(a,b,c,d,e); //1 1 NaN NaN NaN// 如果第一個(gè)字符是數(shù)字會(huì)解析,直到遇到非數(shù)字結(jié)束 // 如果第一個(gè)字符不是數(shù)字或者符號(hào)就返回NaN
    • parseFloat()

      var a = parseFloat('1.2df'); var b = parseFloat('1.3.4'); var c = parseFloat('c12'); var d = parseFloat(null); var e = parseFloat(undefined);console.log(a,b,c,d,e); //1.2 1.3 NaN NaN NaN// parseFloat() 把字符串轉(zhuǎn)換成浮點(diǎn)數(shù) // parseFloat()和parseInt非常相似, // 不同之處在與parseFloat會(huì)解析第一個(gè) . 遇到第二個(gè).或者非數(shù)字結(jié)束 // 如果解析的內(nèi)容里只有整數(shù),解析成整數(shù)
    • +,-,-0 等運(yùn)算

      var str = '500'; console.log(+str); // 取正 console.log(-str); // 取負(fù) console.log(str - 0);

    3.3 轉(zhuǎn)換成布爾類型

    • Boolean()
    var a = Boolean('0'); var b = Boolean(0); var c = Boolean('1'); var d = Boolean(null); var e = Boolean(undefined); var f = Boolean(NaN);console.log(a,b,c,d,e,f); //true false true false false false// 0、''(空字符串) 、null、 undefined 、NaN 會(huì)轉(zhuǎn)換成false 其它都會(huì)轉(zhuǎn)換成true

    總結(jié):

    字符串、數(shù)值及布爾類型的數(shù)據(jù)類型轉(zhuǎn)換

    第4章 操作符

    表達(dá)式:值和操作符,運(yùn)算會(huì)有一個(gè)結(jié)果;

    同時(shí),表達(dá)式中的每個(gè)數(shù)值及部分表達(dá)式,又稱為 子表達(dá)式

    4.1 算術(shù)運(yùn)算符

    + - * / % 取余(取模)

    4.2 一元運(yùn)算符 *

    一元運(yùn)算符:只有一個(gè)操作數(shù)的運(yùn)算符,一元運(yùn)算會(huì)直接修改原始變量的數(shù)據(jù);

    5 + 6 兩個(gè)操作數(shù)的運(yùn)算符 二元運(yùn)算符

    ++ 自身加 (自增)

    – 自身減 (自減)

    • 前置++

      var num1 = 5; ++ num1; var num2 = 6; console.log(num1 + ++ num2); //13
    • 后置++

      var num1 = 5; num1 ++; var num2 = 6 console.log(num1 + num2 ++); //12
    • 猜猜看

      var a = 1; var b = ++a + ++a; console.log(b); //5var a = 1; var b = a++ + ++a; console.log(b);//4var a = 1; var b = a++ + a++; // console.log(b); // 3var a = 1; var b = ++a + a++; console.log(b);//4

      總結(jié)
      前置++:先加1,后參與運(yùn)算
      后置++:先參與運(yùn)算,后加1

      后置++ 運(yùn)算的兩個(gè)條件,滿其一就會(huì)執(zhí)行

      1:整個(gè)表達(dá)式結(jié)束;2表達(dá)式?jīng)]結(jié)束但是又被使用了;

      上面兩個(gè)理解后,下面兩個(gè)自通
      前置-- :先減1,后參與運(yùn)算
      后置-- :先參與運(yùn)算,后減1

    4.3 邏輯運(yùn)算符(布爾運(yùn)算符) *

    && 與 左邊為真則取右邊,左邊為假則取左邊 || 或 左邊為真則取左邊,左邊為假則邊右邊 ! 非 取反 var a = 1; var b = 2; var c = 0;console.log(a || b); //1 console.log(b || a); //2 console.log(c && a); //0 console.log(a || c && b); //1// JS邏輯運(yùn)算中的邏輯或和邏輯與的運(yùn)算結(jié)果: // 決定整個(gè)表達(dá)式的子表達(dá)式的值

    4.4 關(guān)系運(yùn)算符(比較運(yùn)算符)

    < > >= <= == != === !== =====的區(qū)別:==只進(jìn)行值得比較,===類型和值同時(shí)相等,則相等var result = '55' == 55; // true var result = '55' === 55; // false 值相等,類型不相等 var result = 55 === 55; // true

    4.5 賦值運(yùn)算符

    注意與數(shù)學(xué)符號(hào)的差別;

    = += -= *= /= %=

    例如: var num = 0; num += 5; //相當(dāng)于 num = num + 5;

    4.6 運(yùn)算符的優(yōu)先級(jí) *

    優(yōu)先級(jí)從高到底 1. () 優(yōu)先級(jí)最高 2. 一元運(yùn)算符 ++ -- ! 3. 算數(shù)運(yùn)算符 先* / % 后 + - 4. 關(guān)系運(yùn)算符 > >= < <= 5. 相等運(yùn)算符 == != === !== 6. 邏輯運(yùn)算符 先&& 后|| 7. 賦值運(yùn)算符 // 練習(xí)1: var s = 4 >= 6 || '人' != '阿凡達(dá)' && !(12 * 2 == 144) && true console.log(s); //true// 練習(xí)2: var num = 10; var f = 5 == num / 2 && (2 + 2 * num) console.log(f.toString() === 22) //false

    總結(jié):

    操作符的使用,基本數(shù)學(xué)運(yùn)算,一元運(yùn)算符自增自減及前置后置的區(qū)別,邏輯運(yùn)算符及取值,關(guān)系比較運(yùn)算符,賦值運(yùn)算符,運(yùn)算符優(yōu)先級(jí);

    第5章 流程控制

    程序的三種基本結(jié)構(gòu)

    順序結(jié)構(gòu): 從上到下執(zhí)行的代碼就是順序結(jié)構(gòu)

    程序默認(rèn)就是由上到下順序執(zhí)行的;

    分支結(jié)構(gòu):根據(jù)不同的情況及判斷,執(zhí)行對(duì)應(yīng)代碼;

    循環(huán)結(jié)構(gòu):重復(fù)執(zhí)行一段代碼;

    5.1 分支結(jié)構(gòu)

    if語句

    語法結(jié)構(gòu)

    if (/* 條件表達(dá)式 */) {// 執(zhí)行語句 }if (/* 條件表達(dá)式 */){// 成立執(zhí)行語句 } else {// 否則執(zhí)行語句 }if (/* 條件1 */){// 成立執(zhí)行語句 } else if (/* 條件2 */){// 成立執(zhí)行語句 } else if (/* 條件3 */){// 成立執(zhí)行語句 } else {// 最后默認(rèn)執(zhí)行語句 }

    案例

    //獲取兩個(gè)數(shù)字中的最大值 var num1=100; var num2=20; if(num1>num2){console.log(num1); }else{console.log(num2); } // 判斷一個(gè)數(shù)是偶數(shù)還是奇數(shù) var n = 10; if(n%2==0){console.log('偶數(shù)'); }else{console.log('奇數(shù)'); } /** 例子:* 獲取考試的分?jǐn)?shù),如果成績是在90(含)分以上的,則顯示級(jí)別:A* 如果成績是大于等于80的則:B* 如果成績是大于等于70的則:C* 如果成績是大于等于60的則:D* 如果成績是小于60的則:E** */var score = 91;if (score >= 90) {console.log("A");} else if (score >= 80) {console.log("B");} else if (score >= 70) {console.log("C");} else if (score >= 60) {console.log("D");} else {console.log("E");}

    案例:判斷一個(gè)年份是閏年還是平年

    閏年:能被4整除,但不能被100整除的年份 或者 能被400整除的年份

    var n = 2016; if(n%4==0){if(n%100 !=0){console.log('閏年');}else if(n%400 ==0){console.log('閏年');}else{console.log('平年');} }else{console.log('平年'); }
    三元運(yùn)算符
    表達(dá)式1 ? 表達(dá)式2 : 表達(dá)式3 是對(duì)if……else語句的一種簡化寫法

    案例:

    // 是否年滿18歲 var age = 18; var s = age>=18?'Yes':'no'; console.log(s); // 從兩個(gè)數(shù)中找最大值 var a1 = 110; var a2 = 19; var s = a1>a2?a1:a2; console.log(s);
    switch語句

    語法格式:

    switch (expression) {case 常量1:語句;break;case 常量2:語句;break;case 常量n:語句;break;default:語句;break; }/* * 執(zhí)行過程: * 獲取表達(dá)式的值,和值1比較,相同則執(zhí)行代碼1,遇到break跳出整個(gè)語句,結(jié)束 * 如果和值1不匹配,則和值2比較,相同則執(zhí)行代碼2,遇到break跳出整個(gè)語句,結(jié)束 * 如果和值2不匹配,則和值3比較,相同則執(zhí)行代碼3,遇到break跳出整個(gè)語句,結(jié)束 * 如果和值3不匹配,則和值4比較,相同則執(zhí)行代碼4,遇到break跳出整個(gè)語句,結(jié)束 * 如果和之前的所有的值都不一樣,則直接執(zhí)行代碼5,結(jié)束 */ break可以省略,如果省略,代碼會(huì)繼續(xù)執(zhí)行下一個(gè)case switch 語句在比較值時(shí)使用的是全等操作符, 因此不會(huì)發(fā)生類型轉(zhuǎn)換(例如,字符串'10' 不等于數(shù)值 10) /* * * 判斷這個(gè)人的成績的級(jí)別: * 如果是A,則提示,分?jǐn)?shù)在90分以上 * 如果是B,則提示,分?jǐn)?shù)在80分以上 * 如果是C,則提示,分?jǐn)?shù)在70分以上 * 如果是D,則提示,分?jǐn)?shù)在60分以上 * 否則提示,不及格 * */var jiBie="B"; switch (jiBie){case "A" : console.log("分?jǐn)?shù)在90分以上的");break;case "B" : console.log("分?jǐn)?shù)在80分以上的");break;case "C" : console.log("分?jǐn)?shù)在70分以上的");break;case "D" : console.log("分?jǐn)?shù)在60分以上的");break;default :console.log("不及格"); }

    5.2 循環(huán)結(jié)構(gòu)

    在JS語言中,循環(huán)語句有三種,while、do…while、for循環(huán)。

    5.2.1 while語句

    基本語法:

    // 當(dāng)循環(huán)條件為true時(shí),執(zhí)行循環(huán)體, // 當(dāng)循環(huán)條件為false時(shí),結(jié)束循環(huán)。 while (循環(huán)條件) {//循環(huán)體 }

    案例1:計(jì)算1-100之間所有數(shù)的和

    // 初始化變量 var i = 1; var sum = 0; // 判斷條件 while (i <= 100) {// 循環(huán)體sum += i;// 自增i++; } console.log(sum);

    案例2:打印100以內(nèi) 7的倍數(shù)

    var i = 1; while(i<100){if(i%7==0){console.log(i);}i++; }

    案例3:打印100以內(nèi)所有偶數(shù)

    var i = 1; while(i<=100){if(i%2==0){console.log(i);}i++; }

    案例4:打印100以內(nèi)所有偶數(shù)的和

    var i = 1; var s = 0; while(i<=100){if(i%2==0){s = s+i;}i++; } console.log(s);

    5.2.2 do…while語句

    do…while循環(huán)和while循環(huán)非常像,二者經(jīng)常可以相互替代,

    但是do…while的特點(diǎn)是不管條件成不成立,都會(huì)執(zhí)行一次。

    do {// 循環(huán)體; } while (循環(huán)條件);

    案例:計(jì)算1+2+3+4+……+99+100 的結(jié)果

    // 初始化變量 var i = 0; var sum = 1; do {sum += i;//循環(huán)體i++;//自增 } while (i <= 100);//循環(huán)條件

    5.2.3 for語句

    while和do…while一般用來解決無法確認(rèn)次數(shù)的循環(huán)。for循環(huán)一般在循環(huán)次數(shù)確定的時(shí)候比較方便

    for循環(huán)語法:

    // for循環(huán)的表達(dá)式之間用的是;號(hào)分隔的,千萬不要寫成, for (初始化表達(dá)式1; 判斷表達(dá)式2; 自增表達(dá)式3) {// 循環(huán)體4 }

    執(zhí)行順序:1243 ---- 243 -----243(直到循環(huán)條件變成false)

  • 初始化表達(dá)式
  • 判斷表達(dá)式
  • 自增表達(dá)式
  • 循環(huán)體
  • //打印1-100之間所有數(shù) for(var i=1;i<=100;i++){console.log(i); }//求1-100之間所有數(shù)的和 var s = 0; for(var i=0;i<=100;i++){s+=i; } console.log(s);//求1-100之間所有偶數(shù)的和 var s = 0; for(var i=1;i<=100;i++){if(i%2==0){s+=i;} } console.log(s);//打印正方形 var start = ''; for (var i = 0; i < 10; i++) {for (var j = 0; j < 10; j++) {start += '* ';}start += '\n'; } console.log(start);//打印直角三角形 var start = ''; for (var i = 0; i < 10; i++) {for (var j = i; j < 10; j++) {start += '* ';}start += '\n'; } console.log(start);//打印9*9乘法表 var str = ''; for (var i = 1; i <= 9; i++) {for (var j = i; j <=9; j++) {str += i + ' * ' + j + ' = ' + i * j + '\t';}str += '\n'; } console.log(str);

    5.2.4 continue和break

    break:立即跳出整個(gè)循環(huán),即循環(huán)結(jié)束,開始執(zhí)行循環(huán)后面的內(nèi)容(直接跳到大括號(hào))

    continue:立即跳出當(dāng)前循環(huán),繼續(xù)下一次循環(huán)(跳到i++的地方)

    案例1:求1-100之間不能被7整除的整數(shù)的和(用continue)

    var s = 0; for(var i=0;i<100;i++){if(i%7==0){continue;}s+=i; } console.log(s);

    案例2:求200-300之間所有的奇數(shù)的和(用continue)

    var s = 0; for(var i=200;i<=300;i++){if(i%2==0){continue;}else{s+=i;} } console.log(s);

    案例3:求200-300之間第一個(gè)能被7整數(shù)的數(shù)(break)

    for(var i=200;i<=300;i++){if(i%7==0){console.log(i);break;} }

    總結(jié):

    代碼的執(zhí)行流程分為順序、分支和循環(huán)三種結(jié)構(gòu),順序結(jié)構(gòu)是默認(rèn)的,判斷結(jié)構(gòu)主要有if-else和switch-case兩種,循環(huán)結(jié)構(gòu)有while、do-while、for三種,其中continue和break是跳出循環(huán);

    第6章 JS中特殊的對(duì)象-數(shù)組

    基本數(shù)據(jù)類型,只能存儲(chǔ)一個(gè)值(比如:Number/String)。我們想在一個(gè)變量中存儲(chǔ)多個(gè)值,應(yīng)該如何存儲(chǔ)?

    所謂數(shù)組,就是將多個(gè)元素(通常是同一類型)按一定順序排列放到一個(gè)集合中,那么這個(gè)集合我們就稱之為數(shù)組。

    6.1 數(shù)組的創(chuàng)建

    // 字面量方式創(chuàng)建數(shù)組 var arr1 = []; //空數(shù)組 // 創(chuàng)建一個(gè)包含3個(gè)數(shù)值的數(shù)組,多個(gè)數(shù)組項(xiàng)以逗號(hào)隔開 var arr2 = [1, 3, 4]; // 創(chuàng)建一個(gè)包含2個(gè)字符串的數(shù)組 var arr3 = ['a', 'c']; console.log(arr1); console.log(arr2); console.log(arr3);// 可以通過數(shù)組的length屬性獲取數(shù)組的長度 console.log(arr3.length); // 可以設(shè)置length屬性改變數(shù)組中元素的個(gè)數(shù) arr3.length = 0;console.log(arr3[0]);//undefined

    數(shù)組的元素可以是任意類型的數(shù)據(jù),因此,有時(shí)數(shù)組中的某個(gè)元素的值又是一個(gè)數(shù)組,而這樣的數(shù)組被稱為多維數(shù)組,如果數(shù)組中只有其他類型的數(shù)據(jù),而沒有另外的數(shù)組值,這樣的數(shù)組被稱為一維數(shù)組;

    通常,數(shù)組被嵌套N層,則稱為N維數(shù)組,最常見的就是二維數(shù)組、三維數(shù)組、四維數(shù)組,超過一維的數(shù)組都會(huì)被泛稱為多維數(shù)組;

    數(shù)組的維度值越大,復(fù)雜度就越高,開發(fā)中盡量避免產(chǎn)生高維度值的數(shù)組;

    var arr1 = [a,b,c]; // 一維數(shù)組 var arr2 = [a,b,c,[d,e]]; // 二維數(shù)組 var arr3 = [a,b,c,[d,e,[f,g]]]; // 三維數(shù)組 var arr4 = [a,b,c,[d,e,[f,g,[h,t,y]]]]; // 四維數(shù)組

    6.2 獲取數(shù)組元素

    // 格式:數(shù)組名[下標(biāo)] 下標(biāo)又稱索引 // 下標(biāo)從0開始 // 功能:獲取數(shù)組對(duì)應(yīng)下標(biāo)的那個(gè)值,如果下標(biāo)不存在,則返回undefined。 var arr = ['red',, 'green']; arr[0]; // red arr[1]; // undefined 下標(biāo)位置沒有數(shù)據(jù) arr[2]; // green arr[5]; // 這個(gè)數(shù)組的最大下標(biāo)為2,因此返回undefined // 獲取多維數(shù)組的數(shù)據(jù) var arr = ['路飛','娜美',['巴基','女帝',['佐助','喬巴']]]; console.log(arr[2][2][0]); //佐助

    6.3 遍歷數(shù)組

    遍歷:遍及所有,對(duì)數(shù)組的每一個(gè)元素都訪問一次就叫遍歷。

    for循環(huán)數(shù)組遍歷的基本語法:

    for(var i = 0; i < arr.length; i++) {// 數(shù)組遍歷的固定結(jié)構(gòu) }

    for循環(huán)示例:

    var arr1 = [1, 3, 4]; for(var i = 0;i<arr1.length;i++){console.log(arr1[i]); }

    whil循環(huán)示例:

    var arr1 = [1, 3, 4]; var i = 0; while(i<arr1.length){console.log(arr1[i]);i++; }

    6.4 為數(shù)組修改添加元素

    // 格式:數(shù)組名[下標(biāo)/索引] = 值; // 如果下標(biāo)有對(duì)應(yīng)的值,會(huì)把原來的值覆蓋,如果下標(biāo)不存在,會(huì)給數(shù)組新增一個(gè)元素。 var arr = ["red", "green", "blue"]; // 把red替換成了yellow arr[0] = "yellow"; // 給數(shù)組新增加了一個(gè)pink的值 arr[3] = "pink";

    6.5 數(shù)組操作案例

    案例1:求數(shù)組中的所有數(shù)的和

    //求和 var arr = [10, 20, 30, 40, 50]; //定義變量存儲(chǔ)和 var sum = 0; for (var i = 0; i < arr.length; i++) {sum += arr[i]; } console.log("和為:" + sum);

    案例2:獲取數(shù)組中的最大值

    //最大值 var arr = [10, 20, 30, 40, 50, 60]; //假設(shè)這個(gè)變量中的值是最大的 var maxNum = arr[0]; //遍歷數(shù)組 for (var i = 0; i < arr.length; i++) {//判斷if (maxNum < arr[i]) {maxNum = arr[i];} } console.log("最大值是:" + maxNum);

    案例3: 遍歷出數(shù)組中所有的偶數(shù)

    // 遍歷出數(shù)組中所有的偶數(shù) var arr = [1,2,3,4,5,6,7]; for(var i=0;i<arr.length;i++){//判斷if(arr[i]%2==0){console.log(arr[i]);} }

    案例4:將數(shù)組轉(zhuǎn)為字符串并以 | 分割

    //把數(shù)組中的每個(gè)名字后面拼接一個(gè)|然后以字符串的方式輸出 var names = ["卡卡西", "佐助", "鳳姐", "鳴人", "黑崎一護(hù)"]; var str = "";//空的字符串,用來存儲(chǔ)最后的拼接的結(jié)果的字符串 //不停的遍歷數(shù)組的數(shù)據(jù),并且拼接字符串 for (var i = 0; i < names.length - 1; i++) {str += names[i] + "|";//拼接字符串的方式 } str += names[names.length - 1]; console.log(str);

    總結(jié):

    數(shù)組就是多個(gè)數(shù)據(jù)的集合,有一維數(shù)組和多維數(shù)組之分,可以使用字面量方式創(chuàng)建數(shù)組,使用下標(biāo)來獲取數(shù)組元素?cái)?shù)據(jù),使用for或者while循環(huán)來遍歷數(shù)組元素;

    第7章 函數(shù)

    把一段相對(duì)獨(dú)立的具有特定功能的代碼塊封裝起來,形成一個(gè)獨(dú)立實(shí)體,就是函數(shù),起個(gè)名字(函數(shù)名),在后續(xù)開發(fā)中可以反復(fù)調(diào)用

    函數(shù)的作用就是封裝一段代碼,將來可以重復(fù)使用

    7.1 函數(shù)的聲明及調(diào)用

    7.1.1 聲明

    • 關(guān)鍵字聲明
    function 函數(shù)名(){// 函數(shù)體 }
    • 表達(dá)式聲明
    var fn = function() {// 函數(shù)體 }
    • 特點(diǎn):

      函數(shù)聲明的時(shí)候,函數(shù)體并不會(huì)執(zhí)行,只要當(dāng)函數(shù)被調(diào)用的時(shí)候才會(huì)執(zhí)行。
      一個(gè)函數(shù)一般都特定的用來干 一件 事情

    7.1.2 調(diào)用

    • 調(diào)用函數(shù)的語法:
    函數(shù)名();
    • 特點(diǎn):

      函數(shù)體只有在調(diào)用的時(shí)候才會(huì)執(zhí)行,調(diào)用需要()進(jìn)行調(diào)用。
      可以調(diào)用多次(重復(fù)使用)

    // 聲明函數(shù) function sayHi() {console.log("吃了沒?"); } // 調(diào)用函數(shù) sayHi();// 求1-100之間所有數(shù)的和 function getSum() {var sum = 0;for (var i = 0; i < 100; i++) {sum += i;}console.log(sum); } // 一段代碼可以多次調(diào)用 getSum(); getSum(); getSum();

    7.2 參數(shù)

    • 為什么要有參數(shù)
    function getSum() {var sum = 0;for (var i = 1; i <= 100; i++) {sum += i;}console.log(); }// 雖然上面代碼可以重復(fù)調(diào)用,但是只能計(jì)算1-100之間的值 // 如果想要計(jì)算n-m之間所有數(shù)的和,應(yīng)該怎么辦呢?
    • 語法:
    // 函數(shù)內(nèi)部是一個(gè)封閉的環(huán)境,可以通過參數(shù)的方式,把外部的值傳遞給函數(shù)內(nèi)部 // 帶參數(shù)的函數(shù)聲明 function 函數(shù)名(形參1, 形參2, 形參...){// 函數(shù)體 }// 帶參數(shù)的函數(shù)調(diào)用 函數(shù)名(實(shí)參1, 實(shí)參2, 實(shí)參3);
  • 形式參數(shù):在聲明一個(gè)函數(shù)的時(shí)候,為了函數(shù)的功能更加靈活,有些值是固定不了的,對(duì)于這些固定不了的值。我們可以給函數(shù)設(shè)置參數(shù)。這個(gè)參數(shù)沒有具體的值,僅僅起到一個(gè)占位置的作用,我們通常稱之為形式參數(shù),也叫形參。
  • 實(shí)際參數(shù):如果函數(shù)在聲明時(shí),設(shè)置了形參,那么在函數(shù)調(diào)用的時(shí)候就需要傳入對(duì)應(yīng)的參數(shù),我們把傳入的參數(shù)叫做實(shí)際參數(shù),也叫實(shí)參。
  • function fn(a, b) {console.log(a + b); } var x = 5, y = 6; fn(x,y); // x,y實(shí)參,有具體的值。 // 函數(shù)執(zhí)行的時(shí)候會(huì)把x,y復(fù)制一份給函數(shù)內(nèi)部的a和b, // 函數(shù)內(nèi)部的值是復(fù)制的新值,無法修改外部的x,y

    JS 函數(shù)在調(diào)用時(shí),允許傳多個(gè)實(shí)參,就是實(shí)參個(gè)數(shù)可以比形參個(gè)數(shù)多;

    7.3 函數(shù)的返回值

    當(dāng)函數(shù)執(zhí)行完的時(shí)候,并不是所有時(shí)候都要把結(jié)果打印。我們期望函數(shù)給我一些反饋(比如計(jì)算的結(jié)果返回進(jìn)行后續(xù)的運(yùn)算),這個(gè)時(shí)候可以讓函數(shù)返回一些東西。也就是返回值。函數(shù)通過return返回一個(gè)值

    返回值語法:

    //聲明一個(gè)帶返回值的函數(shù) function 函數(shù)名(形參1, 形參2, 形參...){//函數(shù)體return 返回值; }//可以通過變量來接收這個(gè)返回值 var 變量 = 函數(shù)名(實(shí)參1, 實(shí)參2, 實(shí)參3);

    返回值詳解:
    如果函數(shù)沒有顯示的使用 return語句 ,那么函數(shù)有默認(rèn)的返回值:undefined
    如果函數(shù)使用 return語句,那么跟在return后面的值,就成了函數(shù)的返回值
    如果函數(shù)使用 return語句,但是return后面沒有任何值,那么函數(shù)的返回值也是:undefined
    函數(shù)使用return語句后,這個(gè)函數(shù)會(huì)在執(zhí)行完 return 語句之后停止并立即退出,也就是說return后面的所有其他代碼都不會(huì)再執(zhí)行。

    7.4 函數(shù)相關(guān)的其它事情

    7.4.1 匿名函數(shù)與自調(diào)用函數(shù)

    匿名函數(shù):沒有名字的函數(shù)

    匿名函數(shù)如何使用:

    將匿名函數(shù)賦值給一個(gè)變量,這樣就可以通過變量進(jìn)行調(diào)用

    var fun1 = function(){console.log(1); } fun1();

    匿名函數(shù)如果沒有任何變量來表示它,那么就不能直接調(diào)用來執(zhí)行,因此可以通過匿名函數(shù)的自調(diào)用的方式來執(zhí)行

    (function () {alert(123); })();

    關(guān)于自執(zhí)行函數(shù)(匿名函數(shù)自調(diào)用)的作用:防止全局變量污染。

    7.4.2 函數(shù)本身也是值 *

    function fn() {} console.log(typeof fn);
    • 函數(shù)作為參數(shù)

    因?yàn)楹瘮?shù)也是一種值類型,可以把函數(shù)作為另一個(gè)函數(shù)的參數(shù),在另一個(gè)函數(shù)中調(diào)用

    function f1(f){f(); } function f2(){console.log(2); } f1(f2); //2
    • 函數(shù)做為返回值

    因?yàn)楹瘮?shù)是一種類型,所以可以把函數(shù)可以作為返回值從函數(shù)內(nèi)部返回。

    function fn(b) {var a = 10;return function () {alert(a+b);} } var f = fn(5); f(); //15

    總結(jié):

    函數(shù)是一段代碼的封裝,可重復(fù)多次運(yùn)行,函數(shù)的聲明有表達(dá)式聲明和關(guān)鍵字聲明,使用 ·函數(shù)名()· 的方式進(jìn)行調(diào)用,調(diào)用時(shí)傳入的參數(shù)為實(shí)參,聲明時(shí)的參數(shù)時(shí)形參,函數(shù)使用return返回值,函數(shù)可以是沒有名字的匿名函數(shù),函數(shù)本身也可以當(dāng)做值使用;

    第8章 作用域與JS代碼的運(yùn)行 *

    作用域:變量可以起作用的范圍和區(qū)域

    8.1 全局變量和局部變量 *

    • 全局變量與全局作用域

      在任何地方都可以訪問到的變量就是全局變量,全局變量所在的區(qū)域就是全局作用域

    • 局部變量

      只在固定的代碼片段內(nèi)可訪問到的變量,最常見的例如函數(shù)內(nèi)部的變量,就是局部變量。局部變量所在的區(qū)域就是局部作用域(函數(shù)作用域)

    不使用var聲明的變量是全局變量,不推薦使用。 變量退出作用域之后會(huì)銷毀,全局變量關(guān)閉網(wǎng)頁或?yàn)g覽器才會(huì)銷毀

    8.2 變量提升

    console.log(a); // undefined var a = 2; console.log(a); // a is not defined
    • 變量提升

      定義變量的時(shí)候,變量的聲明會(huì)被提升到作用域的最上面,變量的賦值不會(huì)提升。

    • 函數(shù)提升

      JavaScript解析器首先會(huì)把當(dāng)前作用域的函數(shù)聲明提前到整個(gè)作用域的最前面

    f(); function f(){console.log(12); //12 } var f = 1; function f(){console.log(12); //12 } // 由于函數(shù)提升在前,所以被變量聲明替換了; // 執(zhí)行階段,變量被復(fù)制為1,不再是一個(gè)函數(shù), f(); // f is not a function

    注:不管是普通變量還是函數(shù),盡量不要出現(xiàn)重名;

    8.3 JS代碼的運(yùn)行 *

    console.log(s); //undefined var s = 2;

    JavaScript代碼的執(zhí)行是由瀏覽器中的JavaScript解析器來執(zhí)行的。

    JavaScript解析器執(zhí)行JavaScript代碼的時(shí)候,分為兩個(gè)過程:預(yù)解析(編譯)過程和代碼執(zhí)行過程

    預(yù)解析過程:

  • 語法檢查,如果有錯(cuò)誤,直接停止后續(xù)步驟不再運(yùn)行。

  • 把變量和函數(shù)的聲明提升到當(dāng)前作用域的最前面,只會(huì)提升聲明,不會(huì)提升賦值和調(diào)用。

  • 先提升變量后提升函數(shù),如果函數(shù)和變量同名,則被替換;

  • 代碼執(zhí)行過程

    變量的賦值,函數(shù)的調(diào)用,循環(huán)判斷等,根據(jù)代碼由上往下順序執(zhí)行;

    var a = 25; function abc (){alert(a);//undefinedvar a = 10; } abc();// 如果變量和函數(shù)同名的話,函數(shù)優(yōu)先做提升 console.log(a); function a() {console.log('aaaaa'); } var a = 1; console.log(a); // 1、---------------- var num = 10; fun(); function fun() {console.log(num); //undefinedvar num = 20; }// 2、---------------- var a = 18; f1(); function f1() {var b = 9;console.log(a); //undefinedconsole.log(b); // 9var a = '123'; }

    8.4 詞法作用域

    變量的作用域是在定義時(shí)決定而不是執(zhí)行時(shí)決定的,也就是說詞法作用域取決于編譯階段,通過靜態(tài)分析就能確定,因此詞法作用域也叫做靜態(tài)作用域。

    在 js 中詞法作用域規(guī)則:

    • 函數(shù)允許訪問函數(shù)外的數(shù)據(jù).
    • 整個(gè)代碼結(jié)構(gòu)中只有函數(shù)可以限定作用域.
    • 作用域規(guī)則首先使用提升規(guī)則分析
    • 如果當(dāng)前作用規(guī)則中有名字了, 就不考慮外面的名字
    var num = 123; function foo() {console.log( num ); } foo();if ( false ) {var num = 123; } console.log( num ); // undefiend

    也就是說:

    函數(shù)內(nèi)部可以訪問函數(shù)外部的變量,但是函數(shù)外部不可以訪問函數(shù)內(nèi)部的變量;

    函數(shù)內(nèi)部如果有變量,則優(yōu)先使用內(nèi)部的變量,如果函數(shù)內(nèi)部沒有,才會(huì)使用函數(shù)外部的變量;

    8.5 作用域鏈

    只有函數(shù)可以制造作用域結(jié)構(gòu), 那么只要是代碼,就至少有一個(gè)作用域, 即全局作用域。凡是代碼中有函數(shù),那么這個(gè)函數(shù)就構(gòu)成另一個(gè)作用域。如果函數(shù)中還有函數(shù),那么在這個(gè)作用域中就又可以誕生一個(gè)作用域。將這樣的所有的作用域列出來,可以有一個(gè)結(jié)構(gòu): 函數(shù)內(nèi)指向函數(shù)外的鏈?zhǔn)浇Y(jié)構(gòu)。就稱作作用域鏈。 var a = 1; function fn1(){function fn2(){function fn3(){console.log(a);}fn3();}fn2(); } fn1(); var a = 1; function fn1(){var a = 2;function fn2(){var a = 3;function fn3(){console.log(a);}fn3();}fn2(); } fn1();

    總結(jié):

    函數(shù)內(nèi)部是JS代碼的局部作用域,函數(shù)外部是全局作用域,JS 代碼的運(yùn)行分為與解析階段和執(zhí)行階段,變量的聲明實(shí)在與解析階段的,所以變量存在提升,而變量只在自己的作用域中起作用,但是自己作用域是可以訪問上級(jí)作用域的;

    第9章 對(duì)象(Object)

    9.1 什么是對(duì)象

    萬物皆對(duì)象

    現(xiàn)實(shí)生活中:萬物皆對(duì)象,對(duì)象是一個(gè)具體的事物,一個(gè)具體的事物就會(huì)有行為和特征。

    9.2 JavaScript中的對(duì)象

    JavaScript中的對(duì)象其實(shí)就是生活中對(duì)象的一個(gè)抽象 JavaScript的對(duì)象是無序?qū)傩缘募稀?其屬性可以包含基本值、對(duì)象、數(shù)組或函數(shù)。 對(duì)象就是一組沒有順序的值。 我們可以把JavaScript中的對(duì)象想象成鍵值對(duì),其中值可以是數(shù)據(jù)和函數(shù)。 對(duì)象的行為和特征特征---屬性行為---方法

    事物的特征在對(duì)象中用屬性來表示。

    事物的行為在對(duì)象中用方法來表示。

    屬性和方法統(tǒng)稱為對(duì)象的成員。

    9.3 如何得到一個(gè)對(duì)象

    • 字面量方式創(chuàng)建對(duì)象

      var obj1 = {};//得到一個(gè)空對(duì)象 var obj2 = {name:'張三',age:18};//得到擁有兩個(gè)屬性的對(duì)象 //得到擁有兩個(gè)屬性和一個(gè)方法的對(duì)象 var obj3 = {name:'張三',age:18,fei:function(){console.log('你上天啊!');} }
    • new Object() 創(chuàng)建對(duì)象 (內(nèi)置構(gòu)造函數(shù))

      var person = new Object();person.name = 'lisi'; person.age = 35; person.sayHi = function(){console.log('Hello,everyBody'); }
    • 自定義構(gòu)造函數(shù)創(chuàng)建對(duì)象

      function Person(name,age,job){this.name = name;this.age = age;this.job = job;this.sayHi = function(){console.log('Hello,everyBody');} } var p1 = new Person('張三', 22, 'actor');

    new關(guān)鍵字和構(gòu)造函數(shù)

    構(gòu)造函數(shù) ,是一種特殊的函數(shù),又叫做函數(shù)構(gòu)造器。主要用來在創(chuàng)建對(duì)象時(shí)初始化對(duì)象, 即為對(duì)象成員變量賦初始值,總與new運(yùn)算符一起使用在創(chuàng)建對(duì)象的語句中。

  • 構(gòu)造函數(shù)用于創(chuàng)建一類對(duì)象,首字母通常大寫。

  • 構(gòu)造函數(shù)要和new一起使用才有意義。

  • new 關(guān)鍵字也讀做實(shí)例化。實(shí)例化構(gòu)造函數(shù),得到一個(gè)對(duì)象。

  • 9.4 this 的指向

    JavaScript中的this指向問題,比較復(fù)雜,有時(shí)候會(huì)讓人難以捉摸,隨著學(xué)習(xí)的深入,我們會(huì)不斷接觸this,

    在學(xué)習(xí)過程中,我們可以不斷總結(jié),最終搞清楚this在何種情況下指向何處……

    目前,我們只需要記住以下兩點(diǎn)就可以了:

    1: 函數(shù)如果在某個(gè)對(duì)象下,this就指向這個(gè)對(duì)象

    2: 函數(shù)如果被直接調(diào)用,this指向window對(duì)象

    var o1 = {name: '山治',f: function () {console.log(this.name);} } o1.f(); // 山治 function f(){console.log(this); } f(); console.log(window);

    9.5 對(duì)象的使用

    • 方法及屬性的使用
    對(duì)象.方法名()//調(diào)用對(duì)象的方法 對(duì)象.屬性; //獲取對(duì)象的屬性
    • 遍歷對(duì)象的屬性

    通過for…in語法可以遍歷一個(gè)對(duì)象

    var obj1 = {name:'路飛',age : 17,sex : '男', }for(var k in obj1){console.log(k);console.log(obj1[k]); }

    注意:使用for …in語法,同樣可以遍歷數(shù)組

    注意:如果屬性名或方法名,是一個(gè)變量,則使用對(duì)象[變量名] 語法

    • 刪除對(duì)象的屬性
    var obj1 = {name:'路飛',age : 17,sex : '男', }console.log(obj1.age); //17 delete obj1.age; //刪除對(duì)象中指定的屬性 console.log(obj1.age); // undefined

    總結(jié):

    創(chuàng)建對(duì)象有三種方式,字面量、new內(nèi)置構(gòu)造函數(shù)及自定義構(gòu)造函數(shù);對(duì)象中有屬性及方法,this指向當(dāng)前對(duì)象,使用 . (點(diǎn)) 語法調(diào)用屬性及方法;

    第10章 標(biāo)準(zhǔn)庫對(duì)象(內(nèi)置對(duì)象)

    JavaScript 提供了很多個(gè)內(nèi)置對(duì)象:Math/Array/Number/String/Boolean…

    對(duì)象只是帶有屬性方法的特殊數(shù)據(jù)類型。

    這里推薦兩個(gè)查找資料社區(qū):

    火狐開發(fā)者社區(qū)–MDN

    微軟開發(fā)者社區(qū)–MSDN

    10.1 Math對(duì)象

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math

    10.1.1 常用屬性和方法

    Math 是一個(gè)內(nèi)置對(duì)象, 它具有數(shù)學(xué)常數(shù)和函數(shù)的屬性和方法。不是一個(gè)函數(shù)對(duì)象。

    與其它全局對(duì)象不同的是, Math 不是一個(gè)構(gòu)造函數(shù). Math 的所有屬性和方法都是靜態(tài)的.

    跟數(shù)學(xué)相關(guān)的運(yùn)算直接使用Math中的成員即可

    console.log(Math.PI); //圓周率3.141592653589793 Math.random();//介于 0 和 1 之間的偽隨機(jī)數(shù)。Math.ceil(6.6);//獲取大于或等于提供數(shù)值的最小整數(shù)--向上取整 Math.floor(8.8);//獲取小于或等于提供數(shù)值的最大整數(shù)--向下取整 Math.round(9.9);//四舍五入 Math.max(10,20,15);//取多個(gè)值中的最大值 Math.min(10,20,15);//取多個(gè)值中的最小值 Math.pow(10,2);//返回x的y次冪 Math.sqrt(100);//求平方根

    10.1.2 案例

    • 求10-20之間的隨機(jī)數(shù)

      Math.floor(Math.random() * (max - min)) + min;

    10.1.3 屬性方法對(duì)照表

    Math對(duì)象的屬性(常量)

    屬性(常量)描述
    Math.E 常量數(shù)學(xué)常數(shù) e。這是歐拉數(shù),自然對(duì)數(shù)的底。
    Math.LN2 常量2 的自然對(duì)數(shù)。
    Math.LN10 常量10 的自然對(duì)數(shù)。
    Math.LOG2E 常量以 2 為底 e 的對(duì)數(shù)。
    Math.LOG10E 常量以 10 為底 e 的對(duì)數(shù)。
    Math.PI 常量Pi。這是圓的周長與直徑的比值。
    Math.SQRT1_2 常量0.5 的平方根,或相當(dāng)于 1 除以 2 的平方根。
    Math.SQRT2 常量2 的平方根。

    Math對(duì)象的方法(函數(shù))

    方法(函數(shù))描述
    Math.abs 函數(shù)返回?cái)?shù)字的絕對(duì)值。
    Math.acos 函數(shù)返回?cái)?shù)字的反余弦值。
    Math.acosh 函數(shù)返回?cái)?shù)字的雙曲反余弦值(或反雙曲余弦值)。
    Math.asin 函數(shù)返回?cái)?shù)字的反正弦值。
    Math.asinh 函數(shù)返回?cái)?shù)字的反雙曲正弦。
    Math.atan 函數(shù)返回?cái)?shù)字的反正切值。
    Math.atan2 函數(shù)將與 X 軸的角度(以弧度為單位)返回到由 y 和 x 坐標(biāo)表示的點(diǎn)。
    Math.atanh 函數(shù)返回?cái)?shù)字的反雙曲正切。
    Math.ceil 函數(shù)返回大于或等于提供的數(shù)值表達(dá)式的最小整數(shù)。
    Math.cos 函數(shù)返回?cái)?shù)字的余弦值。
    Math.cosh 函數(shù)返回?cái)?shù)字的雙曲余弦。
    Math.exp 函數(shù)返回 e(自然對(duì)數(shù)的底)的乘冪數(shù)。
    Math.expm1 函數(shù)返回 e(自然對(duì)數(shù)的底)的乘冪數(shù)減去 1 的結(jié)果。
    Math.floor 函數(shù)返回小于或等于提供的數(shù)值表達(dá)式的最大整數(shù)。
    Math.hypot 函數(shù)返回參數(shù)平方和的平方根。
    Math.imul 函數(shù)返回被視為 32 位帶符號(hào)整數(shù)的兩個(gè)數(shù)字的積。
    Math.log 函數(shù)返回?cái)?shù)字的自然對(duì)數(shù)。
    Math.log1p 函數(shù)返回 1 加上一個(gè)數(shù)字的的自然對(duì)數(shù)。
    Math.log10 函數(shù)返回?cái)?shù)字以 10 為底的對(duì)數(shù)。
    Math.log2 函數(shù)返回?cái)?shù)字以 2 為底的對(duì)數(shù)。
    Math.max 函數(shù)返回提供的兩個(gè)數(shù)值表達(dá)式中的較大值。
    Math.min 函數(shù)返回提供的兩個(gè)數(shù)字中的較小值。
    Math.pow 函數(shù)返回基表達(dá)式的指定乘冪數(shù)的值。
    Math.random 函數(shù)返回介于 0 和 1 之間的偽隨機(jī)數(shù)。
    Math.round 函數(shù)返回舍入到最近整數(shù)的指定數(shù)值表達(dá)式。
    Math.sign 函數(shù)返回?cái)?shù)字符號(hào),它指示數(shù)字為正數(shù)、負(fù)數(shù)還是 0。
    Math.sin 函數(shù)返回?cái)?shù)字的正弦值。
    Math.sinh 函數(shù)返回?cái)?shù)字的反雙曲正弦。
    Math.sqrt 函數(shù)返回?cái)?shù)字的平方根。
    Math.tan 函數(shù)返回?cái)?shù)字的正切值。
    Math.tanh 函數(shù)返回?cái)?shù)字的雙曲正切。
    Math.trunc 函數(shù)返回?cái)?shù)字的整數(shù)部分,刪除任何小數(shù)數(shù)字。

    10.2 Date對(duì)象(構(gòu)造函數(shù))

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date

    10.2.1 常用屬性和方法

    創(chuàng)建 Date 實(shí)例用來處理日期和時(shí)間。Date 對(duì)象基于1970年1月1日(世界標(biāo)準(zhǔn)時(shí)間)起的毫秒數(shù)。

    // 獲取當(dāng)前時(shí)間,UTC世界時(shí)間,距1970年1月1日(世界標(biāo)準(zhǔn)時(shí)間)起的毫秒數(shù) var now = new Date(); console.log(now.getTime()); // 獲取距1970年1月1日(世界標(biāo)準(zhǔn)時(shí)間)起的毫秒數(shù) console.log(now.valueOf()); // valueOf用于獲取對(duì)象的原始值,與getTime()方法相同Date構(gòu)造函數(shù)的參數(shù) 1. 毫秒數(shù) 1498099000356 new Date(1498099000356) 2. 日期格式字符串 '2015-5-1' new Date('2015-5-1') 3. 年、月、日…… new Date(2015, 4, 1) // 月份從0開始
    • 獲取日期的毫秒形式
    var now = new Date(); console.log(now.getTime()); // valueOf用于獲取對(duì)象的原始值 console.log(now.valueOf());// HTML5中提供的方法,有兼容性問題 var now = Date.now();// 不支持HTML5的瀏覽器,可以用下面這種方式 var now = + new Date(); // 隱式調(diào)用 Date對(duì)象的valueOf()
    • 日期格式化方法
    toString() // 轉(zhuǎn)換成字符串 valueOf() // 獲取毫秒值 // 下面格式化日期的方法,在不同瀏覽器可能表現(xiàn)不一致,一般不用 toDateString() toTimeString() toLocaleDateString() toLocaleTimeString()
    • 獲取日期指定部分
    getTime() // 返回毫秒數(shù)和valueOf()結(jié)果一樣,valueOf()內(nèi)部調(diào)用的getTime() getSeconds() // 返回0-59 getMinutes() // 返回0-59 getHours() // 返回0-23 getDay() // 返回星期幾 0周日 6周6 getDate() // 返回當(dāng)前月的第幾天 getMonth() // 返回月份,***從0開始*** getFullYear() //返回4位的年份 如 2016

    10.2.2 案例

    • 案例1:寫一個(gè)函數(shù),格式化日期對(duì)象,返回yyyy-MM-dd HH:mm:ss的形式
    function formatDate(d) {//如果date不是日期對(duì)象,返回if (!date instanceof Date) {return;}var year = d.getFullYear(),month = d.getMonth() + 1, date = d.getDate(), hour = d.getHours(), minute = d.getMinutes(), second = d.getSeconds();month = month < 10 ? '0' + month : month;date = date < 10 ? '0' + date : date;hour = hour < 10 ? '0' + hour : hour;minute = minute < 10 ? '0' + minute:minute;second = second < 10 ? '0' + second:second;return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second; }
    • 計(jì)算時(shí)間差,返回相差的天/時(shí)/分/秒
    function getInterval(start, end) {var day, hour, minute, second, interval;interval = end - start;interval /= 1000;day = Math.round(interval / 60 /60 / 24);hour = Math.round(interval / 60 /60 % 24);minute = Math.round(interval / 60 % 60);second = Math.round(interval % 60);return {day: day,hour: hour,minute: minute,second: second} }

    10.2.3 方法對(duì)照表

    Date對(duì)象 的方法。

    方法描述
    getDate 方法使用當(dāng)?shù)貢r(shí)間返回一個(gè)月某天的值。
    getDay 方法使用當(dāng)?shù)貢r(shí)間返回一個(gè)星期某天的值。
    getFullYear 方法使用當(dāng)?shù)貢r(shí)間返回年份值。
    getHours 方法使用當(dāng)?shù)貢r(shí)間返回小時(shí)值。
    getMilliseconds 方法使用當(dāng)?shù)貢r(shí)間返回毫秒值。
    getMinutes 方法使用當(dāng)?shù)貢r(shí)間返回分鐘值。
    getMonth 方法使用當(dāng)?shù)貢r(shí)間返回月份值。
    getSeconds 方法使用當(dāng)?shù)貢r(shí)間返回秒值。
    getTime 方法Date 對(duì)象中的時(shí)間值返回為自 1970 年 1 月 1 日午夜起經(jīng)過的毫秒數(shù)。
    getTimezoneOffset 方法返回主機(jī)的時(shí)間與協(xié)調(diào)通用時(shí)間 (UTC) 之間的分鐘差值。
    getUTCDate 方法使用 UTC 返回一個(gè)月某天的值。
    getUTCDay 方法使用 UTC 返回一個(gè)星期某天的值。
    getUTCFullYear 方法使用 UTC 返回年份值。
    getUTCHours 方法使用 UTC 返回小時(shí)值。
    getUTCMilliseconds 方法使用 UTC 返回毫秒值。
    getUTCMinutes 方法使用 UTC 返回分鐘值。
    getUTCMonth 方法使用 UTC 返回月份值。
    getUTCSeconds 方法使用 UTC 返回秒值。
    getVarDate 方法Date 對(duì)象中的 VT_DATE 值返回。
    getYear 方法返回年份值。
    hasOwnProperty 方法返回一個(gè)布爾值,該值指示一個(gè)對(duì)象是否具有指定名稱的屬性。
    isPrototypeOf 方法返回一個(gè)布爾值,該值指示對(duì)象是否存在于另一個(gè)對(duì)象的原型鏈中。
    propertyIsEnumerable 方法返回一個(gè)布爾值,該值指示指定屬性是否為對(duì)象的一部分以及該屬性是否是可枚舉的。
    setDate 方法使用當(dāng)?shù)貢r(shí)間設(shè)置一個(gè)月中某一日的數(shù)值。
    setFullYear 方法使用當(dāng)?shù)貢r(shí)間設(shè)置年份值。
    setHours 方法使用當(dāng)?shù)貢r(shí)間設(shè)置小時(shí)值。
    setMilliseconds 方法使用當(dāng)?shù)貢r(shí)間設(shè)置毫秒值。
    setMinutes 方法使用當(dāng)?shù)貢r(shí)間設(shè)置分鐘值。
    setMonth 方法使用當(dāng)?shù)貢r(shí)間設(shè)置月份值。
    setSeconds 方法使用當(dāng)?shù)貢r(shí)間設(shè)置秒值。
    setTime 方法設(shè)置 Date 對(duì)象中的日期和時(shí)間值。
    setUTCDate 方法使用 UTC 設(shè)置一個(gè)月中某一日的數(shù)值。
    setUTCFullYear 方法使用 UTC 設(shè)置年份值。
    setUTCHours 方法使用 UTC 設(shè)置小時(shí)值。
    setUTCMilliseconds 方法使用 UTC 設(shè)置毫秒值。
    setUTCMinutes 方法使用 UTC 設(shè)置分鐘值。
    setUTCMonth 方法使用 UTC 設(shè)置月份值。
    setUTCSeconds 方法使用 UTC 設(shè)置秒值。
    setYear 方法使用當(dāng)?shù)貢r(shí)間設(shè)置年份值。
    toDateString 方法以字符串值的形式返回一個(gè)日期。
    toGMTString 方法返回使用格林尼治標(biāo)準(zhǔn)時(shí)間 (GMT) 轉(zhuǎn)換為字符串的日期。
    toISOString 方法以字符串值的形式返回采用 ISO 格式的日期。
    toJSON 方法用于在 JSON 序列化之前轉(zhuǎn)換目標(biāo)類型的數(shù)據(jù)。
    toLocaleDateString 方法將一個(gè)日期以字符串值的形式返回,該字符串應(yīng)適合于宿主環(huán)境的當(dāng)前區(qū)域設(shè)置。
    toLocaleString 方法返回使用當(dāng)前區(qū)域設(shè)置轉(zhuǎn)換為字符串的對(duì)象。
    toLocaleTimeString 方法以字符串值的形式返回一個(gè)時(shí)間,此字符串值應(yīng)與宿主環(huán)境的當(dāng)前區(qū)域設(shè)置相適應(yīng)。
    toString 方法返回表示對(duì)象的字符串。
    toTimeString 方法以字符串值形式返回時(shí)間。
    toUTCString 方法返回使用 UTC 轉(zhuǎn)換為字符串的日期。
    valueOf 方法返回指定對(duì)象的原始值。

    10.3 Array對(duì)象

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array

    10.3.1 常用屬性和方法

    length屬性: 返回?cái)?shù)組的成員數(shù)量。

    var arr = ['a', 'b']; console.log(arr.length) // 2

    常用方法

    • push方法用于在數(shù)組的末端添加一個(gè)或多個(gè)元素,并返回添加新元素后的數(shù)組長度。注意,該方法會(huì)改變?cè)瓟?shù)組。

      var a = []; a.push(1) // 1 a.push('a') // 2 a.push(true, {}) // 4 console.log(a); //[1, 'a', true, {}]
    • pop方法用于刪除數(shù)組的最后一個(gè)元素,并返回該元素。注意,該方法會(huì)改變?cè)瓟?shù)組

      var a = ['a', 'b', 'c']; a.pop() // 'c' console.log(a);// ['a', 'b']
    • slice方法用于提取原數(shù)組的一部分,返回一個(gè)新數(shù)組,原數(shù)組不變。

      它的第一個(gè)參數(shù)為起始位置(從0開始),第二個(gè)參數(shù)為終止位置(但該位置的元素本身不包括在內(nèi))。 如果省略第二個(gè)參數(shù),則一直返回到原數(shù)組的最后一個(gè)成員。

      var a = ['a', 'b', 'c']; a.pop() // 'c' console.log(a);// ['a', 'b']
    • join方法用于將數(shù)組元素以指定字符拼接為字符串,返回一個(gè)字符串,原數(shù)組不變。

      var a = ['a','b','c','d','e']; console.log(a.join('-')) // 'a-b-c-d-e'
    • 返回?cái)?shù)組的字符串表示形式。

      var arr = [1, 2, 3, 4]; console.log(arr.toString()); //1,2,3,4

    10.3.2 方法和屬性對(duì)照表

    Array 對(duì)象的屬性。

    屬性描述
    length 屬性返回一個(gè)整數(shù)值,此整數(shù)比數(shù)組中所定義的最高位元素大 1,是實(shí)際元素個(gè)數(shù)。

    Array 對(duì)象的方法。

    方法描述
    concat 方法(數(shù)組)返回由兩個(gè)數(shù)組組合而成的新數(shù)組。
    entries 方法返回包含數(shù)組的鍵/值對(duì)的迭代器。
    every 方法檢查定義的回調(diào)函數(shù)是否為數(shù)組中的所有元素返回 true
    fill 方法使用指定值填充數(shù)組。
    filter 方法對(duì)數(shù)組的每個(gè)元素調(diào)用定義的回調(diào)函數(shù),并返回回調(diào)函數(shù)為其返回 true 的值的數(shù)組。
    findIndex 方法返回滿足回調(diào)函數(shù)中指定的測試條件的第一個(gè)數(shù)組元素的索引值。
    forEach 方法為數(shù)組中的每個(gè)元素調(diào)用定義的回調(diào)函數(shù)。
    hasOwnProperty 方法返回一個(gè)布爾值,該值指示某個(gè)對(duì)象是否具有指定名稱的屬性。
    indexOf 方法(數(shù)組)返回某個(gè)值在數(shù)組中的第一個(gè)匹配項(xiàng)的索引。
    isPrototypeOf 方法返回一個(gè)布爾值,該值指示某個(gè)對(duì)象是否存在于另一個(gè)對(duì)象的原型鏈中。
    join 方法返回由一個(gè)數(shù)組的所有元素串聯(lián)而成的 String 對(duì)象。
    keys 方法返回包含數(shù)組的索引值的迭代器。
    lastIndexOf 方法(數(shù)組)返回指定值在數(shù)組中的最后一個(gè)匹配項(xiàng)的索引。
    map 方法對(duì)數(shù)組的每個(gè)元素調(diào)用定義的回調(diào)函數(shù)并返回包含結(jié)果的數(shù)組。
    pop 方法從數(shù)組中移除最后一個(gè)元素并將該元素返回。
    propertyIsEnumerable 方法返回一個(gè)布爾值,該值指示指定屬性是否為對(duì)象的一部分且是否可枚舉。
    push 方法將新元素追加到一個(gè)數(shù)組中,并返回?cái)?shù)組的新長度。
    reduce 方法通過對(duì)數(shù)組中的所有元素調(diào)用定義的回調(diào)函數(shù)來累積單個(gè)結(jié)果。 回調(diào)函數(shù)的返回值是累積的結(jié)果,并且作為對(duì)回調(diào)函數(shù)的下一個(gè)調(diào)用中的參數(shù)提供。
    reduceRight 方法通過對(duì)數(shù)組中的所有元素調(diào)用定義的回調(diào)函數(shù)來按降序順序累積單個(gè)結(jié)果。 回調(diào)函數(shù)的返回值是累積的結(jié)果,并且作為對(duì)回調(diào)函數(shù)的下一個(gè)調(diào)用中的參數(shù)提供。
    reverse 方法將元素順序被反轉(zhuǎn)的 Array 對(duì)象返回。
    shift 方法從數(shù)組中移除第一個(gè)元素并將返回該元素。
    slice 方法(數(shù)組)返回一個(gè)數(shù)組中的一部分。
    some 方法檢查定義的回調(diào)函數(shù)是否為數(shù)組的任何元素返回 true
    sort 方法返回一個(gè)元素已經(jīng)進(jìn)行了排序的 Array 對(duì)象。
    splice 方法從一個(gè)數(shù)組中移除元素,如有必要,在所移除元素的位置上插入新元素,并返回所移除的元素。
    toLocaleString 方法返回使用當(dāng)前區(qū)域設(shè)置的字符串。
    toString 方法返回?cái)?shù)組的字符串表示形式。
    unshift 方法在數(shù)組的開頭插入新元素。
    valueOf 方法獲取對(duì)數(shù)組的引用。
    values 方法返回包含數(shù)組的值的迭代器。

    10.4 String對(duì)象

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String

    10.4.1 常用屬性和方法

    var s = 'JavaScript'; // length屬性返回字符串的長度。 var i = s.length; //返回參數(shù)在字符串中第一次出現(xiàn)的位置 var i = s.indexOf('b'); //從原字符串取出子字符串并返回,不改變?cè)址?/span> var i = s.substr(2,4);//從下標(biāo)第二個(gè)開始截取4個(gè)長度的字符串 //toLowerCase方法用于將一個(gè)字符串全部轉(zhuǎn)為小寫 //toUpperCase則是全部轉(zhuǎn)為大寫 var i = s.toLowerCase(); var i = s.toUpperCase();// 用于替換匹配的子字符串,只替換第一個(gè)匹配 var i = s.replace('a','b'); console.log(i);

    10.4.2 方法和屬性對(duì)照表

    String 對(duì)象的屬性

    屬性描述
    constructor 屬性指定用于創(chuàng)建對(duì)象的函數(shù)。
    length 屬性(字符串)返回 String 對(duì)象的長度。
    prototype 屬性為對(duì)象的類返回原型的引用。

    String 對(duì)象的方法。

    方法描述
    anchor 方法將具有 NAME 特性的 HTML 定位點(diǎn)放置在文本兩側(cè)。
    big 方法將 HTML 標(biāo)記放置在文本兩側(cè)。
    blink 方法將 HTML 標(biāo)記放置在文本兩側(cè)。
    bold 方法將 HTML 標(biāo)記放置在文本兩側(cè)。
    charAt 方法返回指定索引處的字符。
    charCodeAt 方法返回指定字符的 Unicode 編碼。
    codePointAt 方法返回一個(gè) Unicode UTF-16 字符的碼位。
    concat 方法(字符串)返回由提供的兩個(gè)字符串串聯(lián)而成的字符串。
    EndsWith 方法返回一個(gè)布爾值,該值指示字符串或子字符串是否以傳入字符串結(jié)尾。
    includes 方法返回一個(gè)布爾值,該值指示傳入字符串是否包含在字符串對(duì)象中。
    fixed 方法將 HTML 標(biāo)記放置在文本兩側(cè)。
    fontcolor 方法將具有 COLOR 特性的 HTML 標(biāo)記放置在文本兩側(cè)。
    fontsize 方法將具有 SIZE 特性的 HTML 標(biāo)記放置在文本兩側(cè)。
    hasOwnProperty 方法返回一個(gè)布爾值,該值指示某個(gè)對(duì)象是否具有指定名稱的屬性。
    indexOf 方法(字符串)返回字符串內(nèi)第一次出現(xiàn)子字符串的字符位置。
    isPrototypeOf 方法返回一個(gè)布爾值,該值指示某個(gè)對(duì)象是否存在于另一個(gè)對(duì)象的原型鏈中。
    italics 方法將 HTML 標(biāo)記放置在文本兩側(cè)。
    lastIndexOf 方法(字符串)返回字符串內(nèi)子字符串的最后一個(gè)匹配項(xiàng)。
    link 方法將具有 HREF 特性的 HTML 定位點(diǎn)放置在文本兩側(cè)。
    localeCompare 方法返回一個(gè)值,該值指示兩個(gè)字符串在當(dāng)前區(qū)域設(shè)置中是否相等。
    match 方法通過使用提供的正則表達(dá)式對(duì)象來搜索字符串并以數(shù)組形式返回結(jié)果。
    normalize 方法返回指定字符串的 Unicode 范式。
    propertyIsEnumerable 方法返回一個(gè)布爾值,該值指示指定屬性是否為對(duì)象的一部分且是否可枚舉。
    repeat 方法返回一個(gè)新的字符串對(duì)象,它的值等于重復(fù)了指定次數(shù)的原始字符串。
    replace 方法使用正則表達(dá)式替換字符串中的文本并返回結(jié)果。
    search 方法返回正則表達(dá)式搜索中第一個(gè)子字符串匹配項(xiàng)的位置。
    slice 方法(字符串)返回字符串的片段。
    small 方法將 HTML 標(biāo)記放置在文本兩側(cè)。
    split 方法返回一個(gè)字符串拆分為若干子字符串時(shí)所產(chǎn)生的字符串?dāng)?shù)組。
    StartsWith 方法返回一個(gè)布爾值,該值指示字符串或子字符串是否以傳入字符串開頭。
    strike 方法將 HTML 標(biāo)記放置在文本兩側(cè)。
    sub 方法將 HTML 標(biāo)記放置在文本兩側(cè)。
    substr 方法返回一個(gè)從指定位置開始且具有指定長度的子字符串。
    substring 方法返回 String 對(duì)象中指定位置處的子字符串。
    sup 方法將 HTML 標(biāo)記放置在文本兩側(cè)。
    toLocaleLowerCase 方法返回一個(gè)字符串,其中所有字母字符都轉(zhuǎn)換為小寫形式,并將考慮主機(jī)環(huán)境的當(dāng)前區(qū)域設(shè)置。
    toLocaleString 方法返回使用當(dāng)前區(qū)域設(shè)置轉(zhuǎn)換為字符串的對(duì)象。
    toLocaleUpperCase 方法返回一個(gè)字符串,其中所有字母字符都轉(zhuǎn)換為大寫形式,并將考慮主機(jī)環(huán)境的當(dāng)前區(qū)域設(shè)置。
    toLowerCase 方法返回一個(gè)字符串,其中所有字母字符都轉(zhuǎn)換為小寫形式。
    toString 方法返回字符串。
    toUpperCase 方法返回一個(gè)字符串,其中所有字母字符都轉(zhuǎn)換為大寫形式。
    trim 方法返回已移除前導(dǎo)空格、尾隨空格和行終止符的字符串。
    valueOf 方法返回字符串。

    10.5 包裝對(duì)象

    對(duì)象是 JavaScript 語言最主要的數(shù)據(jù)類型,三種原始類型的值——數(shù)值、字符串、布爾值——在一定條件下,也會(huì)自動(dòng)轉(zhuǎn)為對(duì)象,也就是原始類型的“包裝對(duì)象”。

    所謂“包裝對(duì)象”,就是分別與數(shù)值、字符串、布爾值相對(duì)應(yīng)的Number、String、Boolean三個(gè)原生對(duì)象。這三個(gè)原生對(duì)象可以把原始類型的值變成(包裝成)對(duì)象。

    var v1 = new Number(123); var v2 = new String('abc'); var v3 = new Boolean(true);typeof v1 // "object" typeof v2 // "object" typeof v3 // "object"v1 === 123 // false v2 === 'abc' // false v3 === true // false

    包裝對(duì)象的最大目的,首先是使得 JavaScript 的對(duì)象涵蓋所有的值,其次使得原始類型的值可以方便地調(diào)用某些方法。

    原始類型的值,可以自動(dòng)當(dāng)作對(duì)象調(diào)用,即調(diào)用各種對(duì)象的方法和參數(shù)。

    這時(shí),JavaScript 引擎會(huì)自動(dòng)將原始類型的值轉(zhuǎn)為包裝對(duì)象實(shí)例,在使用后立刻銷毀實(shí)例。

    比如,字符串可以調(diào)用length屬性,返回字符串的長度。

    'abc'.length // 3

    上面代碼中,abc是一個(gè)字符串,本身不是對(duì)象,不能調(diào)用length屬性。

    JavaScript 引擎自動(dòng)將其轉(zhuǎn)為包裝對(duì)象,在這個(gè)對(duì)象上調(diào)用length屬性。

    調(diào)用結(jié)束后,這個(gè)臨時(shí)對(duì)象就會(huì)被銷毀。這就叫原始類型與實(shí)例對(duì)象的自動(dòng)轉(zhuǎn)換。

    JS代碼規(guī)范&編程風(fēng)格

    • 縮進(jìn):

      空格和tab鍵都可以,盡量保持一致,使用一種;

      兩個(gè)空格和四個(gè)空格都行,盡量保持一致就行,但是使用4個(gè)空格的多一些;

    • 分號(hào):

      盡量不要忘記,每一行的結(jié)束都要加分號(hào)

      while 與 for 循環(huán)后面不要加分號(hào)

      if else、switch等分支語句后面不要加分號(hào)

      關(guān)鍵字聲明函數(shù),后面不要加分號(hào)

      表達(dá)式聲明函數(shù),函數(shù)后面加分號(hào)

    • 區(qū)塊:

      兩種寫法

    if(){}if() {}

    ? 理論上兩種都可以,但是盡量使用第一種,因?yàn)閖s會(huì)在行尾自動(dòng)添加分號(hào),有時(shí)會(huì)出現(xiàn)意外情況;

    • 圓括號(hào)

      函數(shù)的聲明和調(diào)用、表達(dá)式運(yùn)算

      1:函數(shù)調(diào)用時(shí),函數(shù)名和括號(hào)之間沒有空格

      2:函數(shù)聲明時(shí),函數(shù)名和括號(hào)之間沒有空格

      3:參與表達(dá)式運(yùn)算時(shí),括號(hào)的前面和后面,都要加空格

    • 變量的聲明

      console.log(x); var x = 10;//等價(jià)于var x; console.log(x); x = 10;

      為了避免此種情況的出現(xiàn),建議將所有在本作用域下聲明的變量都提到最前面聲明并賦值;

    • 自增自減運(yùn)算

      因?yàn)?++ 在前和++ 在后的運(yùn)算結(jié)果不同,所以,盡量使用 +=1 -=1 替代,

      提高代碼的可讀性;

      你的團(tuán)隊(duì)中一定有搞不明白++在前和在后的區(qū)別的二傻子;生活不易,請(qǐng)善待他們;

    • 賦值 =

      賦值前后加空格;

    變量命名和代碼縮進(jìn) 規(guī)范,是一個(gè)程序員必備的基本編程素質(zhì);

    讓別人給你調(diào)試BUG的第一前提條件就是 縮進(jìn)要規(guī)范

    的當(dāng)前區(qū)域設(shè)置。 |
    | toLocaleString 方法 | 返回使用當(dāng)前區(qū)域設(shè)置轉(zhuǎn)換為字符串的對(duì)象。 |
    | toLocaleUpperCase 方法 | 返回一個(gè)字符串,其中所有字母字符都轉(zhuǎn)換為大寫形式,并將考慮主機(jī)環(huán)境的當(dāng)前區(qū)域設(shè)置。 |
    | toLowerCase 方法 | 返回一個(gè)字符串,其中所有字母字符都轉(zhuǎn)換為小寫形式。 |
    | toString 方法 | 返回字符串。 |
    | toUpperCase 方法 | 返回一個(gè)字符串,其中所有字母字符都轉(zhuǎn)換為大寫形式。 |
    | trim 方法 | 返回已移除前導(dǎo)空格、尾隨空格和行終止符的字符串。 |
    | valueOf 方法 | 返回字符串。 |

    10.5 包裝對(duì)象

    對(duì)象是 JavaScript 語言最主要的數(shù)據(jù)類型,三種原始類型的值——數(shù)值、字符串、布爾值——在一定條件下,也會(huì)自動(dòng)轉(zhuǎn)為對(duì)象,也就是原始類型的“包裝對(duì)象”。

    所謂“包裝對(duì)象”,就是分別與數(shù)值、字符串、布爾值相對(duì)應(yīng)的Number、String、Boolean三個(gè)原生對(duì)象。這三個(gè)原生對(duì)象可以把原始類型的值變成(包裝成)對(duì)象。

    var v1 = new Number(123); var v2 = new String('abc'); var v3 = new Boolean(true);typeof v1 // "object" typeof v2 // "object" typeof v3 // "object"v1 === 123 // false v2 === 'abc' // false v3 === true // false

    包裝對(duì)象的最大目的,首先是使得 JavaScript 的對(duì)象涵蓋所有的值,其次使得原始類型的值可以方便地調(diào)用某些方法。

    原始類型的值,可以自動(dòng)當(dāng)作對(duì)象調(diào)用,即調(diào)用各種對(duì)象的方法和參數(shù)。

    這時(shí),JavaScript 引擎會(huì)自動(dòng)將原始類型的值轉(zhuǎn)為包裝對(duì)象實(shí)例,在使用后立刻銷毀實(shí)例。

    比如,字符串可以調(diào)用length屬性,返回字符串的長度。

    'abc'.length // 3

    上面代碼中,abc是一個(gè)字符串,本身不是對(duì)象,不能調(diào)用length屬性。

    JavaScript 引擎自動(dòng)將其轉(zhuǎn)為包裝對(duì)象,在這個(gè)對(duì)象上調(diào)用length屬性。

    調(diào)用結(jié)束后,這個(gè)臨時(shí)對(duì)象就會(huì)被銷毀。這就叫原始類型與實(shí)例對(duì)象的自動(dòng)轉(zhuǎn)換。

    JS代碼規(guī)范&編程風(fēng)格

    • 縮進(jìn):

      空格和tab鍵都可以,盡量保持一致,使用一種;

      兩個(gè)空格和四個(gè)空格都行,盡量保持一致就行,但是使用4個(gè)空格的多一些;

    • 分號(hào):

      盡量不要忘記,每一行的結(jié)束都要加分號(hào)

      while 與 for 循環(huán)后面不要加分號(hào)

      if else、switch等分支語句后面不要加分號(hào)

      關(guān)鍵字聲明函數(shù),后面不要加分號(hào)

      表達(dá)式聲明函數(shù),函數(shù)后面加分號(hào)

    • 區(qū)塊:

      兩種寫法

    if(){}if() {}

    ? 理論上兩種都可以,但是盡量使用第一種,因?yàn)閖s會(huì)在行尾自動(dòng)添加分號(hào),有時(shí)會(huì)出現(xiàn)意外情況;

    • 圓括號(hào)

      函數(shù)的聲明和調(diào)用、表達(dá)式運(yùn)算

      1:函數(shù)調(diào)用時(shí),函數(shù)名和括號(hào)之間沒有空格

      2:函數(shù)聲明時(shí),函數(shù)名和括號(hào)之間沒有空格

      3:參與表達(dá)式運(yùn)算時(shí),括號(hào)的前面和后面,都要加空格

    • 變量的聲明

      console.log(x); var x = 10;//等價(jià)于var x; console.log(x); x = 10;

      為了避免此種情況的出現(xiàn),建議將所有在本作用域下聲明的變量都提到最前面聲明并賦值;

    • 自增自減運(yùn)算

      因?yàn)?++ 在前和++ 在后的運(yùn)算結(jié)果不同,所以,盡量使用 +=1 -=1 替代,

      提高代碼的可讀性;

      你的團(tuán)隊(duì)中一定有搞不明白++在前和在后的區(qū)別的二傻子;生活不易,請(qǐng)善待他們;

    • 賦值 =

      賦值前后加空格;

    變量命名和代碼縮進(jìn) 規(guī)范,是一個(gè)程序員必備的基本編程素質(zhì);

    讓別人給你調(diào)試BUG的第一前提條件就是 縮進(jìn)要規(guī)范

    總結(jié)

    以上是生活随笔為你收集整理的web基础学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。