2.1數據類型與變量
計算機程序就是去處理現實中各種數據
數據:
數據的幾種屬性:名稱、值、類型
JS中的數據:
程序就是對現實中的數據進行加工,所以JS中也必須有相應的數據描述。
(1) 數值型:數值型數據支持多種表示形式
十進制:23,3.14;
八進制:023;(19)
十六進制:0x23(35)
科學計數法:3e2(3×102),3.5e-2(3.5×10-2)
<script>
alert(1399);
alert(345)
alert(023);//八進制
alert(0x23);//十六進制
alert(3.5e-2);//科學計數法
</script>
(2)字符串
Typeof() 數據的類型
爲什麼要有數據類型?
生活中是存在不同的數據類型的,計算機要解決生活問題,那麼他就和生活中的數據類型產生了映射,所以有了數據類型。
變量:
變量就是一個內存單元。
Var variable的縮寫變量的意思。聲明一個變量。
var name = "曹鵬飛";
命名的規則:
1、 可以有字母、數字、下劃線和$組成
2、 數字不能開頭(?)
3、關鍵字不能用
命名的原則:見名思義。
規範:
(1)儘量使用英文單詞或者組合,或者專業名詞
weight color
filename(駝峯命名法)
(2)儘量不要使用拼音
變量的值:
變量的類型是由變量的值來決定的。
系統會爲不同的類型分配不同的大小來存儲數據。
如果是布爾類型就分配一個字節的大小來存儲
如果是數字和字符串,那麼根據他的大小和長度來分配字節數來存儲。
JS是弱類型語言,所有的類型的變量都用var來聲明。
JS是動態類型的語言,變量的類型會根據值的變化而變化,不會出錯。
JS語言特點:
更加高級,不嚴謹。
變量不聲明可以直接用。
使用嚴謹的格式,就必須先定義變量才能使用變量。
2.2對象類型
對象在JS當中對應的是object
定義一個狗的對象
<script>
var dog = {name:"藏藏",type:"藏獒",color:"花色",
sex:"雄",age:3,marry:false};
alert (typeof (dog.age));
</script>
狗:
名字:藏藏
品種:藏獒
顏色:花色
年齡:3
是否婚配:否
使用new Object()定義一個對象類型的變量
var dog = new Object();
dog.name="藏藏";
dog.age = 3;
dog.marry = false;
爲什麼有對象?
和爲什麼有數據類型是一樣的。生活中處處有對象,所以js中有這種對象類型。
如何使用對象裏面的屬性?
使用對象名+,+對象屬性名
2.3算術運算符與表達式
常見的算術運算符有 + - × ÷
對應在JS當中的運算符+ - * /
運算的的前提條件是:數值
才能進行運算,如果不是數值,加減乘除運算時就會出錯。
加法運算:
var weight = 65;
weight = weight + 10;
alert(weight);
字符串拼接
var dogName = "zhangsan";
dogName = dogName + "feng";
取餘運算符在JS當中用%表示 作用:得到兩個數的餘數
var num1 = 10;
var num2 = 3;
var result = num1 % num2;
alert(result);
使用技巧:可以解決週期性問題。
var date = 2;/*計算12天后是星期幾*/
date =date + 12 % 7 ;
num++ 和 ++num 的區別
a = num++;
a = ++num;
Num++ 是先用再加;
var num1 = 1;
alert(num1 ++);
等價於
alert(num1);
num1 = num1 + 1;
++ num 是先加再用
var num1 = 1;
alert(++ num1);
等價於
var num1 = 1;
num1 = num1 + 1;
alert(num1);
2.4賦值運算符與表達式
賦值運算是表示將一個數據存儲到某個內存單元中(變量)
var num = 10;
複合賦值運算符
num = num + 10;
num += 10;//兩者完全等價
+= 可以不存在,完全由 普通運算符取代,存在的唯一價值就是簡潔方便。
2.5關係運算符與表達式
生活中常見的關係運算符
大於 小於 等於 大於等於 小於等於 不等於
< = >= <= !=
判斷兩個數是否相等 使用兩個=號。與生活常識不符合,如何避免判斷兩個數相等時出錯。就是把常量放在等式的前面
把變量放在等式後面。
絕對相等
變量的值和類型都相等,使用 == 來表示
絕對不相等
變量的值和類型都不相等,使用 !== 來表示
<script>
var num = 2;
var str = "2";
alert(num !== str);
</script>
對比不相等
<script>
var num = 2;
var str = "2";
alert(num != str);
</script>
2.6邏輯運算符
與
兩者同時成立結果才成立。
第一個關係是true第二個關係也是true那麼結果纔是true
如果有一個或多個爲false時結果爲false
在JS當中用兩個&&表示
<script>
var num1 = 10;
var num2 = 20;
alert(num1 < 20 && num2 > 10);
</script>
或
至少有一個成立那麼結果就爲true
在JS中用||來表達
<script>
var num1 = 10;
var num2 = 20;
alert(num1 > 20 || num2 > 10);
</script>
非
結果爲原身的對立面,就是當關系成立時,非之後就變爲不成立。
非true之後結果爲false
在JS中用!來表達
var num = 10;
alert(!(num > 10));
2.7位運算符與表達式
如何得到一個數的二進制。
<script>
var num = 5;
//011
alert(num.toString(2));
</script>
同理得到一個數其他進制數,改變。toString裏面的值
與:
首先要把數轉化爲二進制。
運算法則,只有兩者同時爲1時結果才爲1.其餘結果均爲0
按位運算
var num1 = 5;
var num2 = 6;
alert(num1.toString(2) & num2.toString(2));
或:
兩個數有一個是爲1
var num1 = 5;
var num2 = 6;
var num3 = 3;
alert(num1.toString(2) | num2.toString(2));
異或:
兩個值相同時結果爲0兩個值不同時爲1
var num1 = 5;
var num2 = 6;
var num3 = 3;
alert(num1.toString(2) ^ num2.toString(2));
2.8程序設計思維
生活中的程序:
(1)宿舍保修:填寫保修單–>上報宿舍管理員–>聯繫物業–>找維修師傅–>上門維修–>反饋。
(2)銀行開戶:客戶填寫開戶申請單–>提交證件資料–>審覈資料真實性(1.本人、資料真實齊全則通過;2.其他人代辦、有委託書、資料真實齊全則通過)–>錄入系統開戶–>設置密碼–>發放卡、存摺。
解決生活中問題的步驟(流程)描述。
計算機中的程序:
解決問題的步驟描述,但是是用計算機語言描述
編程:
根據業務需要,制定或編制解決問題的流程。編制程序的人應該非常熟悉或者精通業務
如果編制計算機程序的要求:
(1)精通業務
(2)精通計算機語言
學習方向:
(1)解決問題的思路
(2)計算機語言
重點是解決問題的思路,思路與計算機沒什麼關係。所有雖然我們學習的是JS,但是更多更重要的又並不是JS內容。
難點是思維的轉變,也就是說從現在開始,需要站在計算機的角度去思考和描述問題。
案例一:計算一個三位數的各位數字之和,比如415的各位之和就是4+1+5=10。
<script>
/*解決問題的思路
* (1)提示用戶輸入一個三位數
* (2)接收輸入存放於num中
* (3)計算百位b100,除以100取整
* (4)計算十位b10,對100求餘,除以10取整
* (5)計算個位b1,對10求餘
* (6)計算b100+b10+b1
* (7)輸出結果*/
var num = prompt("提示輸入一個三位數");
var b100 = Math.floor(num/100);//math.ceil()上
var b10 = Math.floor((num%100)/10);
var b1 = num%10;
var sum = b100 + b10 + b1;
alert(sum);
</script>
通過這個案例,我們學到如下知識:
(1)程序設計分爲兩個步驟:思路和編碼。
(2)思路可以使用自然語言、流程圖等一切可以描述清楚解決方案的形式來描述。
(3)將思路翻譯成相應的代碼。
案例二:根據三角形的三邊長計算三角形的面積
<script>
/*
* (1)請輸入三角形三邊長,設三邊長分別爲numa、numb、numc
* (2)先求出半周長 p=(a+b+c)/2
* (3)再求三角形面積 S = √[p(p-a)(p-b)(p-c)]
* (4)輸出結果
* */
var numa = Number(prompt("請輸入第一條邊長")); //Number();轉化爲數值類型
var numb = Number(prompt("請輸入第二條邊長")); //Number();轉化爲數值類型
var numc = Number(prompt("請輸入第三條邊長")); //Number();轉化爲數值類型
var p = (numa + numb + numc)/2; //計算半周長
var s = Math.sqrt(p * (p - numa) * (p - numb) * (p - numc)); //海倫公式
alert(s); //輸出結果
</script>
案例三:話費計算器,根據通話時長(單位爲秒)計算話費,資費標準爲0.5元/分鐘。
<script>
/*
* (1)提示用戶輸入通話時長,精確到秒
* (2)接收輸入存放在min,將秒除以60再向上取整
* (3)資費標準爲0.5元/分鐘
* (4)計算費用
* (5)輸出結果
* */
var second = Number(prompt("請輸入通話時長"));
var minute = Math.ceil(second/60); //按分鐘收費,不滿1分鐘的地方按一分鐘收費
var money = minute * 0.5;
alert("此次通話產生話費"+money+"元");
</script>