新生大學(xué)JavaScript編程入門學(xué)習(xí)筆記之二

一、課程回顧

番外篇:Github靜態(tài)網(wǎng)頁搭建方法。

【理論講解】

在信息技術(shù)高速發(fā)展的現(xiàn)在,我們可以這樣理解,對人類來說的所有的信息都是對計算機來說的數(shù)據(jù),因此可以想象,計算機可以涵蓋的數(shù)據(jù)的多樣化、豐富化。

一切從命名開始

以人名舉例講解:

我們對于一個人的概念,可以說是一堆屬性和關(guān)系的集合。包括:姓名、身高、體重、年齡……

先取名再生小孩——把名字和小孩關(guān)聯(lián)上

用名字來操縱人——小明,快去寫作業(yè)。

從姓名開始思考——豐富的屬性、多樣關(guān)系

名字和目標(biāo)——小明是一個具體的人,目標(biāo)是一堆屬性、關(guān)系等。

關(guān)聯(lián)名字和目標(biāo)——小明不等于一個具體的人,“小明”這個名字,只是一組數(shù)據(jù)的集合。

各種描述遞進(jìn):用格式化方式、符號化方式、偽代碼方式描述“小明”,越來越接近代碼的呈現(xiàn)?!芸炊畟未a了就能看懂代碼了

我們是如何識別人的?——記住一個人的名字與其屬性、關(guān)系的對應(yīng)信息。

程序的目標(biāo)地是什么?——“處理數(shù)據(jù)、得到結(jié)果”

首先需要對數(shù)據(jù)進(jìn)行命名(一切從命名開始):

與C、Java等其他編程語言不同,JavaScript里所有數(shù)據(jù),不區(qū)分類型,都用“var”表示

語句:var output = “Hello, JS”

代表:1..聲明:var output;2.定義:output = “Hello, JS”

即:聲明這個變量,變量名output,再定義這個變量,給這個變量賦值。

內(nèi)行話——“先聲明再定義”

命名方式:常用駝峰命名法,(還有帶下劃線的,具體內(nèi)容自己了解)

學(xué)習(xí)補充:變量常用小駝峰法,類名、空間名等常用大駝峰法。

【實操部分】

分別在瀏覽器和Node環(huán)境運行樣例,嘗試修改內(nèi)容,觀察顯示效果,對運行環(huán)境有初步感受。

【心法記錄】

1、本課程重點是編程思想的講解

2、代碼不重要,掌握理解問題、解決問題的方法最重要。

3、一切從命名開始——體會:對于一個新的要表達(dá)、運用的信息或數(shù)據(jù),名字起得好一定程度上代表思路、概念清晰。

4、學(xué)會、擅用畫圖的方法來進(jìn)行思考。

二、課程作業(yè)

【第二次作業(yè)】——變量和值

昨天我?guī)湍銈兪崂砹俗兞亢椭抵g的關(guān)系。下面梳理一些知識點供大家參考,好好利用周末的時間把這塊啃下來。

1.多樣化的數(shù)據(jù)格式(數(shù)字、文本、布爾、對象、數(shù)組)

2.多樣化的數(shù)據(jù)格式的操作方式。

以上內(nèi)容網(wǎng)上有很多教程,如果你想買書,我推薦“JavaScript權(quán)威指南—淘寶前端團(tuán)隊翻譯的那本”

作業(yè)要求-1.熟讀getting-started-with-javascript/study/lesson2/smaple_code.js代碼。用node環(huán)境和瀏覽器環(huán)境運行一下代碼(注意:瀏覽器運行請使用my_personal_info_page.html)

Node運行環(huán)境截圖
瀏覽器運行環(huán)境截圖

作業(yè)要求-2.寫一篇課程總結(jié),題目為:編程中為什么會有豐富化的數(shù)據(jù)格式?(我可能跑題了)

我的作業(yè)

在信息化社會,數(shù)據(jù)幾乎無所不包,所有可以想象到的信息都可以用數(shù)據(jù)來記錄、存儲。在快速更替的時代,我們希望有更高效、高質(zhì)的工作、學(xué)習(xí)以及生活,豐富多樣的實用軟件、精準(zhǔn)高效的數(shù)據(jù)分析處理工具都再發(fā)揮著越來越重要的作用。

如此紛繁的數(shù)據(jù)交給計算機來處理,需要有規(guī)范的數(shù)據(jù)格式,即數(shù)據(jù)類型,以便處理能力更有的放矢、更高效。

一.大類

在JavaScript中數(shù)據(jù)類型分為兩類:1.原始類型、2.對象類型。

原始類型:包括數(shù)字、字符串、布爾值。

有兩個特殊的原始值:null(空)、undefined(未定義)。

對象類型:對象(object),數(shù)組(array)是一種特殊對象,函數(shù)是另一種特殊對象。

二.具體說說:

1.原始類型:

1-1.?dāng)?shù)字:

1-1-1. JavaScript的數(shù)字均采用IEEE 754標(biāo)準(zhǔn)定義的64位浮點格式表示,不區(qū)分整數(shù)值和浮點數(shù)值(與C和Java等不同),需要注意的是:JavaScript的實際操作,整數(shù)是基于32位整數(shù)。

1-1-2. JS程序中直接出現(xiàn)的數(shù)字稱為數(shù)字直接量(numeric literal),包括整型直接量、浮點型直接量。

1-1-2-1. 整型直接量:包括十進(jìn)制整型直接量、十六進(jìn)制整型直接量。某些JS的實現(xiàn)支持八進(jìn)制整型直接量,但不保證通用,因此一般不要使用八進(jìn)制整型直接量。

1-1-2-2. 浮點型直接量:包括傳統(tǒng)實數(shù)寫法,例如:3.14、1.789;指數(shù)記數(shù)法,例如:6.02e23、2.987653E-32。浮點型直接量語法表示為:[digits][.digits][(E|e)[(+|-)]digits]

1-1-3. JS的算術(shù)運算:

1-1-3-1. 基本運算符包括加(+)、減(-)、乘(*)、除(/)和求余(%)

1-1-3-2. 復(fù)雜的算術(shù)運算:通過Math對象的屬性定義的函數(shù)和常量來實現(xiàn),例如:Math.pow(2,3) ->8,2的3次冪;Math.ceil(.6)->1,向上求整;Math.floor(.6) ->0,向下求整。

1-1-4. JS的算術(shù)運算在溢出(overflow)、下溢(underflow)或被零整除時不會報錯。

1-1-4-1. 溢出(overflow):即當(dāng)數(shù)字運算結(jié)果超過了JS所能表示的數(shù)字上限,正數(shù)時以無窮大(Infinity)表示、負(fù)數(shù)時以負(fù)無窮大(-Infinity)表示。

1-1-4-2. 下溢(underflow):即當(dāng)運算結(jié)果無限接近于零并比JS能表示的最小值還小,此時JS會返回0。還有個“負(fù)零”概念,一般可忽略。

1-1-4-3. 被0整除,返回?zé)o窮大(Infinity)或負(fù)無窮大(-Infinity),0除以0、無窮大除以無窮大、給負(fù)數(shù)作開方或算術(shù)運算符與不是數(shù)字或無法轉(zhuǎn)換為數(shù)字的操作數(shù)一起使用時,都將返回非數(shù)字,表示為NaN(not-a-number)。

? NaN有一點特殊:它和任何值都不相等,包括自身。x==NaN不能表示x是NaN,可通過x!=x判斷,當(dāng)且僅當(dāng)x為NaN時,x!=x為true。

1-1-5. 二進(jìn)制浮點數(shù)和四舍五入錯誤

在JS的數(shù)值范圍內(nèi),浮點數(shù)只能表示有限個數(shù)實數(shù),而不是一般理解的無數(shù)個,會有些真實值只能近似表示。這是由于浮點數(shù)表示法是二進(jìn)制表示法引起,只能精確的表示2的次方分之一的值,如:1/8、1/1024,而我們常會使用十進(jìn)制分?jǐn)?shù),如:1/10、1/1000,二進(jìn)制浮點數(shù)無法精確表示類似0.1這樣簡單的數(shù)字。會造成運算的尷尬,如0.3-0.2并不等于0.2-0.1。

這不是JS中才會出現(xiàn),好在精確值非常精確,一般任務(wù)都能勝任,只有在比較兩個數(shù)大小事才會遇到。以后的版本或許會針對此做改進(jìn)。如涉及重要金融計算,建議使用“分”而不是“元”作單位。

1-1-6. 日期和時間的表示:JS語言包括Date()構(gòu)造函數(shù),可以創(chuàng)建包括年月日時分秒的對象,進(jìn)行日期、時間的特定值提取、使用,有些特殊規(guī)范,比如月份從0開始。

1-2. 字符串:

1-3. 布爾值:boolean,指代真或假、開或關(guān)、是或否,類型值只有兩個:true和false。用于編程語言的控制結(jié)構(gòu)。通常與比較語句結(jié)合使用,舉例:

If(a==4)

b=b+1;

else

a=a+1;

這段代碼判斷a是否等于4,等于時,b加1;不等于時,a加1。

關(guān)于轉(zhuǎn)換:任意JavaScript的值都可以轉(zhuǎn)換為布爾值,其中undefined、null、0、-0、NaN、“”(空字符)六個會轉(zhuǎn)換為false(有稱“假值”(falsy value)),其他值均會轉(zhuǎn)換為true(有稱“真值”(truthy value))。

布爾值支持三個布爾運算符、一個方法:”&&”(AND)、”||”(OR)、”!”(NOT) 以及toString()

2.兩個特殊的原始值:null(空)、undefined(未定義)。它們不是數(shù)字、字符串、布爾值這些原始類型,通常代表了各自特殊類型的唯一的成員。它們都不包含任何屬性和方法。

3. 對象類型:對象(object),數(shù)組(array)是一種特殊對象,函數(shù)是另一種特殊對象

3-1.對象(object):(還需學(xué)習(xí)理解、補充)

3-2.數(shù)組(array):是值的有序集合。每個值叫做一個元素,每個元素在數(shù)組中有一個位置索引數(shù)。數(shù)組元素可以是任意類型,也不一定是常量。數(shù)組能夠表達(dá)不同類型的組合信息,比如一個人的相關(guān)信息等。

3-2-1.創(chuàng)建數(shù)組:

(1)數(shù)組直接量:

沒有元素的數(shù)組:var empty=[];

有3個元素的數(shù)組:var array1=[1,2,3];

3個不同類型的元素和結(jié)尾的逗號:var array2=[1,“a”,true,](數(shù)組直接量語法允許有可選的結(jié)尾的逗號,所以是三個元素而非四個)

(2)調(diào)用構(gòu)造函數(shù)Array():

沒有任何元素的空數(shù)組:var a = new Array()

指定長度作為參數(shù):var a = new Array(10)——沒有存儲值及索引,預(yù)分配了一個數(shù)組空間。

顯式指定方式:var a = new Array(5,4,3,“test”);——這種方式不如使用數(shù)組直接量。

3-2-2.數(shù)組方法包括:join()、reverse()、sort()、concat()、slice()、splice()、push()和pop()、unshift()和shift()、toString()和toLocaleString(),前面這些是ECMAScript3中的方法,在ECMAScript5中還有forEach()、map()、filter()、every()和some()、reduce()和reduceRight()、indexOf()和lastIndexOf()

(還需在使用中逐漸深入理解)

作業(yè)要求-3. 如果有問題,在總結(jié)中把你的問題羅列出來,我會做解答。

遇到的問題

1、 瀏覽器運行代碼發(fā)現(xiàn)的情況:

當(dāng)打開my_personal_info_page.html頁面后,同一部分內(nèi)容,并未修改這部分代碼,刷新前后顯示效果不同。


圖一

修改代碼后直接點擊瀏覽器的刷新后“console”頁顯示:(后來試過不做任何代碼修改,直接刷新也會這樣)

圖二

想知道這是什么情況?


2、更新Fork項目時報錯:

需要更新老師的項目內(nèi)容,從網(wǎng)上搜索到方法介紹(原文鏈接地址),文中介紹了網(wǎng)站和終端兩種方法。

先使用的終端方法,結(jié)果失敗了,最后一步提示報錯,后來使用了網(wǎng)站操作方式,很順利,更新成功。

終端報錯如下圖,請老師幫忙分析下網(wǎng)站能成功、終端不成功是什么原因?謝謝~!

圖三

3.關(guān)于Date()函數(shù),嘗試執(zhí)行var now = new Date(),得到的返回值時間是晚于我們8小時的時間?

圖四

4.另外想問,能不能推薦個MAC用的保存網(wǎng)頁(好幾屏)為圖片的好辦法?用chrome能不能實現(xiàn)?

【附加作業(yè)要求】

1.在github上部署自己的靜態(tài)網(wǎng)頁,把網(wǎng)頁地址放在總結(jié)文檔里。

在github上部署的靜態(tài)網(wǎng)頁:https://fanmilir.github.io/MyPage/

【作業(yè)提交方式】

1.請向getting-started-with-javascript項目發(fā)起pull request。

https://github.com/xugy0926/getting-started-with-javascript

2.文檔格式,markdown。

3.提交homework/lesson2目錄下。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容