01-JavaScript基礎.md
學習目標:
- 掌握程式設計的基本思維
- 掌握程式設計的基本語法 typora-copy-images-to: media
JavaScript基礎
HTML和CSS 京東
課前娛樂
眾人皆笑我瘋癲,我笑爾等看不穿
##課前說明 目標:掌握程式設計的基本思想 掌握JavaScript的基礎語法,使用常見API(備註)完成相應案例及練習和作業 培養獨立解決問題能力 遇到問題先獨立除錯(牛X從規範和除錯開始) 能夠獨立寫出所有案例程式碼 注意:
- 以大多數同學的接受能力為基準,穩準狠的前行
- 注重基礎,以最簡單的案例說明問題,並以企業專案案例進行實踐
- 課上思考,課下提問。不需要深究的地方不要鑽牛角尖。
- 必須完成作業,基礎堅挺的同學低調,基礎薄弱同學多問 一句話送給大家:當你要放棄的時候想想當初為什麼堅持到現在! 筆記和程式碼是”大家的”, 自己寫的才是自己的. 複製程式碼者,沒有”男朋友” 不寫程式碼者,沒有”女朋友”
##階段說明 JavaScript基礎 Web API JavaScript高階
##第一天重點內容 變數的宣告及使用 資料型別 型別轉換 運算子
##課外提示 1.敲程式碼用指法,指法配圖,堅持一週者即可熟練 2.碼農不需要練就一陽指或者二指禪 3.可以使用金山打字通,此處並非打廣告,個人建議,天天敲程式碼,不停的反覆的敲練習和作業,速度和基本功的快速提升 奉勸各位: 保護好自己的手
##瀏覽器說明 瀏覽器是指可以顯示網頁伺服器或者檔案系統的HTML檔案內容,並讓使用者與這些檔案互動的一種軟體。 通俗的講:可以顯示頁面的一個軟體, 國內網民計算機上常見的網頁瀏覽器有,QQ瀏覽器、Internet Explorer、Firefox、Safari,Opera、Google Chrome、百度瀏覽器、搜狗瀏覽器、獵豹瀏覽器、360瀏覽器、UC瀏覽器、傲遊瀏覽器、世界之窗瀏覽器等,瀏覽器是最經常使用到的客戶端程式。 常用的五大瀏覽器:chrome,firefox,Safari,ie,opera 我們用chrome(谷歌瀏覽器)
網頁、網站和應用程式
網頁:單獨的一個頁面 網站:一些列相關的頁面組成到一起 應用程式:可以和使用者產生互動,並實現某種功能。
演示JavaScript的強大
JavaScript介紹
JavaScript是什麼
HTML CSS
JavaScript 程式語言 流程控制
Netscape在最初將其指令碼語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。JavaScript最初受Java啟發而開始設計的,目的之一就是“看上去像Java”,因此語法上有類似之處,一些名稱和命名規範也借自Java。JavaScript與Java名稱上的近似,是當時Netscape為了營銷考慮與Sun微系統達成協議的結果。Java和JavaScript的關係就像張雨和張雨生的關係,只是名字很像。
Java 伺服器端的程式語言
JavaScript 執行在客戶端(瀏覽器)的程式語言
JavaScript是一種執行在***客戶端*** 的***指令碼語言*** JavaScript的直譯器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的指令碼語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。
JavaScript最初的目的
JavaScript現在的意義(應用場景)
JavaScript 發展到現在幾乎無所不能。
- 網頁特效
- 服務端開發(Node.js)
- 命令列工具(Node.js)
- 桌面程式(Electron)
- App(Cordova)
- 控制硬體-物聯網(Ruff)
- 遊戲開發(cocos2d-js)
JavaScript和HTML、CSS的區別
- HTML:提供網頁的結構,提供網頁中的內容
- CSS: 用來美化網頁
- JavaScript: 可以用來控制網頁內容,給網頁增加動態的效果
JavaScript的組成
ECMAScript - JavaScript的核心
ECMA 歐洲計算機制造聯合會
網景:JavaScript
微軟:JScript
定義了JavaScript的語法規範
JavaScript的核心,描述了語言的基本語法和資料型別,ECMAScript是一套標準,定義了一種語言的標準與具體實現無關
BOM - 瀏覽器物件模型
一套操作瀏覽器功能的API
通過BOM可以操作瀏覽器視窗,比如:彈出框、控制瀏覽器跳轉、獲取解析度等
DOM - 文件物件模型
一套操作頁面元素的API
DOM可以把HTML看做是文件樹,通過DOM提供的API可以對樹上的節點進行操作
JavaScript初體驗
CSS:行內樣式、嵌入樣式、外部樣式
JavaScript的書寫位置
- 寫在行內
<input type="button" value="按鈕" onclick="alert('Hello World')" />
- 寫在script標籤中
<head>
<script>
alert('Hello World!');
</script>
</head>
- 寫在外部js檔案中,在頁面引入
<script src="main.js"></script>
-
注意點
引用外部js檔案的script標籤中不可以寫JavaScript程式碼
計算機組成
軟體
- 應用軟體:瀏覽器(Chrome/IE/Firefox)、QQ、Sublime、Word
- 系統軟體:Windows、Linux、mac OSX
硬體
- 三大件:CPU、記憶體、硬碟 – 主機板
- 輸入裝置:滑鼠、鍵盤、手寫板、攝像頭等
- 輸出裝置:顯示器、印表機、投影儀等
變數
什麼是變數
-
什麼是變數
變數是計算機記憶體中儲存資料的識別符號,根據變數名稱可以獲取到記憶體中儲存的資料
-
為什麼要使用變數
使用變數可以方便的獲取或者修改記憶體中的資料
如何使用變數
- var宣告變數
var age;
- 變數的賦值
var age;
age = 18;
- 同時宣告多個變數
var age, name, sex;
age = 10;
name = 'zs';
- 同時宣告多個變數並賦值
var age = 10, name = 'zs';
變數在記憶體中的儲存
var age = 18;
變數的命名規則和規範
-
規則 - 必須遵守的,不遵守會報錯
-
由字母、數字、下劃線、$符號組成,不能以數字開頭
-
不能是關鍵字和保留字,例如:for、while。
-
區分大小寫
-
-
規範 - 建議遵守的,不遵守不會報錯
- 變數名必須有意義
- 遵守駝峰命名法。首字母小寫,後面單詞的首字母需要大寫。例如:userName、userPassword
-
下面哪些變數名不合法
a 1 age18 18age name $name _sex &sex theworld theWorld
案例
- 交換兩個變數的值
- 不使用臨時變數,交換兩個數值變數的值
資料型別
簡單資料型別
Number、String、Boolean、Undefined、Null
Number型別
-
數值字面量:數值的固定值的表示法
110 1024 60.5
-
進位制
十進位制
var num = 9;
進行算數計算時,八進位制和十六進位制表示的數值最終都將被轉換成十進位制數值。
十六進位制
var num = 0xA;
數字序列範圍:0~9以及A~F
八進位制
var num1 = 07; // 對應十進位制的7
var num2 = 019; // 對應十進位制的19
var num3 = 08; // 對應十進位制的8
數字序列範圍:0~7
如果字面值中的數值超出了範圍,那麼前導零將被忽略,後面的數值將被當作十進位制數值解析
-
浮點數
- 浮點數的精度問題
浮點數
var n = 5e-324; // 科學計數法 5乘以10的-324次方
浮點數值的最高精度是 17 位小數,但在進行算術計算時其精確度遠遠不如整數
var result = 0.1 + 0.2; // 結果不是 0.3,而是:0.30000000000000004
console.log(0.07 * 100);
不要判斷兩個浮點數是否相等
- 數值範圍
最小值:Number.MIN_VALUE,這個值為: 5e-324
最大值:Number.MAX_VALUE,這個值為: 1.7976931348623157e+308
無窮大:Infinity
無窮小:-Infinity
-
數值判斷
- NaN:not a number
- NaN 與任何值都不相等,包括他本身
- isNaN: is not a number
- NaN:not a number
String型別
‘abc’ “abc”
-
字串字面量
‘程式猿’,‘程式媛’, “黑馬程式猿”
思考:如何列印以下字串。 我是一個"正直"的人 我很喜歡"黑馬’程式猿’"
-
轉義符
-
字串長度
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);
- 兩邊只要有一個是字串,那麼+就是字串拼接功能
- 兩邊如果都是數字,那麼就是算術功能。
Boolean型別
- Boolean字面量: true和false,區分大小寫
- 計算機內部儲存:true為1,false為0
Undefined和Null
- undefined表示一個聲明瞭沒有賦值的變數,變數只宣告的時候值預設是undefined
- null表示一個空,變數的值如果想為null,必須手動設定
複雜資料型別
Object
獲取變數的型別
typeof
var age = 18;
console.log(typeof age); // 'number'
字面量
在原始碼中一個固定值的表示法。
數值字面量:8, 9, 10
字串字面量:‘黑馬程式設計師’, “大前端”
布林字面量:true,false
註釋
單行註釋
用來描述下面一個或多行程式碼的作用
// 這是一個變數
var name = 'hm';
多行註釋
用來註釋多條程式碼
/*
var age = 18;
var name = 'zs';
console.log(name, age);
*/
資料型別轉換
如何使用谷歌瀏覽器,快速的檢視資料型別?
字串的顏色是黑色的,數值型別是藍色的,布林型別也是藍色的,undefined和null是灰色的
轉換成字串型別
-
toString()
var num = 5; console.log(num.toString());
-
String()
String()函式存在的意義:有些值沒有toString(),這個時候可以使用String()。比如:undefined和null
-
拼接字串方式
num + “”,當 + 兩邊一個操作符是字串型別,一個操作符是其它型別的時候,會先把其它型別轉換成字串再進行字串拼接,返回字串
轉換成數值型別
-
Number()
Number()可以把任意值轉換成數值,如果要轉換的字串中有一個不是數值的字元,返回NaN
-
parseInt()
var num1 = parseInt("12.3abc"); // 返回12,如果第一個字元是數字會解析知道遇到非數字結束 var num2 = parseInt("abc123"); // 返回NaN,如果第一個字元不是數字或者符號就返回NaN
-
parseFloat()
parseFloat()把字串轉換成浮點數 parseFloat()和parseInt非常相似,不同之處在與 parseFloat會解析第一個. 遇到第二個.或者非數字結束 如果解析的內容裡只有整數,解析成整數
-
+,-0等運算
var str = '500'; console.log(+str); // 取正 console.log(-str); // 取負 console.log(str - 0);
轉換成布林型別
- Boolean()
0 ‘’(空字串) null undefined NaN 會轉換成false 其它都會轉換成true
操作符
運算子 operator
5 + 6
表示式 組成 運算元和操作符,會有一個結果
算術運算子
+ - * / %
一元運算子
一元運算子:只有一個運算元的運算子
5 + 6 兩個運算元的運算子 二元運算子
++ 自身加1
– 自身減1
-
前置++
var num1 = 5; ++ num1; var num2 = 6; console.log(num1 + ++ num2);
-
後置++
var num1 = 5; num1 ++; var num2 = 6 console.log(num1 + num2 ++);
-
猜猜看
var a = 1; var b = ++a + ++a; console.log(b); var a = 1; var b = a++ + ++a; console.log(b); var a = 1; var b = a++ + a++; console.log(b); var a = 1; var b = ++a + a++; console.log(b);
總結 前置++:先加1,後參與運算 後置++:先參與運算,後加1 上面兩個理解後,下面兩個自通 前置-- :先減1,後參與運算 後置-- :先參與運算,後減1
邏輯運算子(布林運算子)
&& 與 兩個運算元同時為true,結果為true,否則都是false
|| 或 兩個運算元有一個為true,結果為true,否則為false
! 非 取反
關係運算符(比較運算子)
< > >= <= == != === !==
==與===的區別:==只進行值得比較,===型別和值同時相等,則相等
var result = '55' == 55; // true
var result = '55' === 55; // false 值相等,型別不相等
var result = 55 === 55; // true
賦值運算子
= += -= *= /= %=
例如:
var num = 0;
num += 5; //相當於 num = num + 5;
運算子的優先順序
優先順序從高到底
1. () 優先順序最高
2. 一元運算子 ++ -- !
3. 算數運算子 先* / % 後 + -
4. 關係運算符 > >= < <=
5. 相等運算子 == != === !==
6. 邏輯運算子 先&& 後||
7. 賦值運算子
// 練習1:
4 >= 6 || '人' != '阿凡達' && !(12 * 2 == 144) && true
// 練習2:
var num = 10;
5 == num / 2 && (2 + 2 * num).toString() === '22'
表示式和語句
表示式
一個表示式可以產生一個值,有可能是運算、函式呼叫、有可能是字面量。表示式可以放在任何需要值的地方。
語句
語句可以理解為一個行為,迴圈語句和判斷語句就是典型的語句。一個程式有很多個語句組成,一般情況下;分割一個一個的語句
流程控制
程式的三種基本結構
順序結構
從上到下執行的程式碼就是順序結構
程式預設就是由上到下順序執行的
分支結構
根據不同的情況,執行對應程式碼
迴圈結構
迴圈結構:重複做一件事情
分支結構
if語句
語法結構
if (/* 條件表示式 */) {
// 執行語句
}
if (/* 條件表示式 */){
// 成立執行語句
} else {
// 否則執行語句
}
if (/* 條件1 */){
// 成立執行語句
} else if (/* 條件2 */){
// 成立執行語句
} else if (/* 條件3 */){
// 成立執行語句
} else {
// 最後預設執行語句
}
案例: 求兩個數的最大數 判斷一個數是偶數還是奇數 分數轉換,把百分制轉換成ABCDE <60 E 60-70 D 70-80 C 80-90 B 90 - 100 A 作業: 判斷一個年份是閏年還是平年 閏年:能被4整除,但不能被100整除的年份 或者 能被400整除的年份 判斷一個人的年齡是否滿18歲(是否成年)
三元運算子
表示式1 ? 表示式2 : 表示式3
是對if……else語句的一種簡化寫法
案例: 是否年滿18歲 從兩個數中找最大值
switch語句
語法格式:
switch (expression) {
case 常量1:
語句;
break;
case 常量2:
語句;
break;
case 常量3:
語句;
break;
…
case 常量n:
語句;
break;
default:
語句;
break;
}
break可以省略,如果省略,程式碼會繼續執行下一個case
switch 語句在比較值時使用的是全等操作符, 因此不會發生型別轉換(例如,字串'10' 不等於數值 10)
案例: 顯示星期幾 素質教育(把分數變成ABCDE)千萬不要寫100個case喲
布林型別的隱式轉換
流程控制語句會把後面的值隱式轉換成布林型別
轉換為true 非空字串 非0數字 true 任何物件
轉換成false 空字串 0 false null undefined
// 結果是什麼?
var a = !!'123';
案例
var message;
// 會自動把message轉換成false
if (message) {
// todo...
}
迴圈結構
在javascript中,迴圈語句有三種,while、do…while、for迴圈。
while語句
基本語法:
// 當迴圈條件為true時,執行迴圈體,
// 當迴圈條件為false時,結束迴圈。
while (迴圈條件) {
//迴圈體
}
程式碼示例:
// 計算1-100之間所有數的和
// 初始化變數
var i = 1;
var sum = 0;
// 判斷條件
while (i <= 100) {
// 迴圈體
sum += i;
// 自增
i++;
}
console.log(sum);
案例: 列印100以內 7的倍數 列印100以內所有偶數 列印100以內所有偶數的和 作業: 列印100以內的奇數 列印100以內的奇數的和
do…while語句
do…while迴圈和while迴圈非常像,二者經常可以相互替代,但是do…while的特點是不管條件成不成立,都會執行一次。
基礎語法:
do {
// 迴圈體;
} while (迴圈條件);
程式碼示例:
// 初始化變數
var i = 1;
var sum = 0;
do {
sum += i;//迴圈體
i++;//自增
} while (i <= 100);//迴圈條件
案例:
求100以內所有3的倍數的和
使用do-while迴圈:輸出詢問“我愛你,嫁給我吧?”,選擇“你喜歡我嗎?(y/n):",如果輸入為y則列印”我們形影不離“,若輸入為n,則繼續詢問
for語句
while和do…while一般用來解決無法確認次數的迴圈。for迴圈一般在迴圈次數確定的時候比較方便
for迴圈語法:
// for迴圈的表示式之間用的是;號分隔的,千萬不要寫成,
for (初始化表示式1; 判斷表示式2; 自增表示式3) {
// 迴圈體4
}
執行順序:1243 ---- 243 -----243(直到迴圈條件變成false)
- 初始化表示式
- 判斷表示式
- 自增表示式
- 迴圈體
案例:
列印1-100之間所有數
求1-100之間所有數的和
求1-100之間所有數的平均值
求1-100之間所有偶數的和
同時求1-100之間所有偶數和奇數的和
列印正方形
// 使用拼字串的方法的原因
// console.log 輸出重複內容的問題
// console.log 預設輸出內容介紹後有換行
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);
作業:
求1-100之間所有數的乘積
求1-100之間所有奇數的和
計算1-100之間能3整除的數的和
計算1-100之間不能被7整除的數的和
// 講解思路。如果不會寫程式,可以先把數學公式準備好
本金10000元存入銀行,年利率是千分之三,每過1年,將本金和利息相加作為新的本金。計算5年後,獲得的本金是多少?
有個人想知道,一年之內一對兔子能繁殖多少對?於是就築了一道圍牆把一對兔子關在裡面。已知一對兔子每個月可以生一對小兔子,而一對兔子從出生後第3個月起每月生一對小兔子。假如一年內沒有發生死亡現象,那麼,一對兔子一年內(12個月)能繁殖成多少對?(兔子的規律為數列,1,1,2,3,5,8,13,21)
continue和break
break:立即跳出整個迴圈,即迴圈結束,開始執行迴圈後面的內容(直接跳到大括號)
continue:立即跳出當前迴圈,繼續下一次迴圈(跳到i++的地方)
案例:
求整數1~100的累加值,但要求碰到個位為3的數則停止累加
求整數1~100的累加值,但要求跳過所有個位為3的數
作業:
求1-100之間不能被7整除的整數的和(用continue) 求200-300之間所有的奇數的和(用continue) 求200-300之間第一個能被7整數的數(break)
除錯
- 過去除錯JavaScript的方式
- alert()
- console.log()
- 斷點除錯
斷點除錯是指自己在程式的某一行設定一個斷點,除錯時,程式執行到這一行就會停住,然後你可以一步一步往下除錯,除錯過程中可以看各個變數當前的值,出錯的話,除錯到出錯的程式碼行即顯示錯誤,停下。
- 除錯步驟
瀏覽器中按F12-->sources-->找到需要除錯的檔案-->在程式的某一行設定斷點
- 除錯中的相關操作
Watch: 監視,通過watch可以監視變數的值的變化,非常的常用。
F10: 程式單步執行,讓程式一行一行的執行,這個時候,觀察watch中變數的值的變化。
F8:跳到下一個斷點處,如果後面沒有斷點了,則程式執行結束。
tips: 監視變數,不要監視表示式,因為監視了表示式,那麼這個表示式也會執行。
- 程式碼除錯的能力非常重要,只有學會了程式碼除錯,才能學會自己解決bug的能力。初學者不要覺得除錯程式碼麻煩就不去除錯,知識點花點功夫肯定學的會,但是程式碼除錯這個東西,自己不去練,永遠都學不會。
- 今天學的程式碼除錯非常的簡單,只要求同學們記住程式碼除錯的這幾個按鈕的作用即可,後面還會學到很多的程式碼除錯技巧。
陣列
為什麼要學習陣列
之前學習的資料型別,只能儲存一個值(比如:Number/String。我們想儲存班級中所有學生的姓名,此時該如何儲存?
陣列的概念
所謂陣列,就是將多個元素(通常是同一型別)按一定順序排列放到一個集合中,那麼這個集合我們就稱之為陣列。
陣列的定義
陣列是一個有序的列表,可以在陣列中存放任意的資料,並且陣列的長度可以動態的調整。
通過陣列字面量建立陣列
// 建立一個空陣列
var arr1 = [];
// 建立一個包含3個數值的陣列,多個數組項以逗號隔開
var arr2 = [1, 3, 4];
// 建立一個包含2個字串的陣列
var arr3 = ['a', 'c'];
// 可以通過陣列的length屬性獲取陣列的長度
console.log(arr3.length);
// 可以設定length屬性改變陣列中元素的個數
arr3.length = 0;
獲取陣列元素
陣列的取值
// 格式:陣列名[下標] 下標又稱索引
// 功能:獲取陣列對應下標的那個值,如果下標不存在,則返回undefined。
var arr = ['red',, 'green', 'blue'];
arr[0]; // red
arr[2]; // blue
arr[3]; // 這個陣列的最大下標為2,因此返回undefined
遍歷陣列
遍歷:遍及所有,對陣列的每一個元素都訪問一次就叫遍歷。
陣列遍歷的基本語法:
for(var i = 0; i < arr.length; i++) {
// 陣列遍歷的固定結構
}
陣列中新增元素
陣列的賦值
// 格式:陣列名[下標/索引] = 值;
// 如果下標有對應的值,會把原來的值覆蓋,如果下標不存在,會給陣列新增一個元素。
var arr = ["red", "green", "blue"];
// 把red替換成了yellow
arr[0] = "yellow";
// 給陣列新增加了一個pink的值
arr[3] = "pink";
案例
求一組數中的所有數的和和平均值
求一組數中的最大值和最小值,以及所在位置
將字串陣列用|或其他符號分割
要求將陣列中的0項去掉,將不為0的值存入一個新的陣列,生成新的陣列
翻轉陣列
氣泡排序,從小到大
函式
為什麼要有函式
如果要在多個地方求1-100之間所有數的和,應該怎麼做?
什麼是函式
把一段相對獨立的具有特定功能的程式碼塊封裝起來,形成一個獨立實體,就是函式,起個名字(函式名),在後續開發中可以反覆呼叫
函式的作用就是封裝一段程式碼,將來可以重複使用
函式的定義
- 函式宣告
function 函式名(){
// 函式體
}
- 函式表示式
var fn = function() {
// 函式體
}
-
特點:
函式宣告的時候,函式體並不會執行,只要當函式被呼叫的時候才會執行。 函式一般都用來幹一件事情,需用使用動詞+名詞,表示做一件事情
tellStory
sayHello
等
函式的呼叫
- 呼叫函式的語法:
函式名();
-
特點:
函式體只有在呼叫的時候才會執行,呼叫需要()進行呼叫。 可以呼叫多次(重複使用)
程式碼示例:
// 宣告函式
function sayHi() {
console.log("吃了沒?");
}
// 呼叫函式
sayHi();
// 求1-100之間所有數的和
function getSum() {
var sum = 0;
for (var i = 0; i < 100; i++) {
sum += i;
}
console.log(sum);
}
// 呼叫
getSum();
函式的引數
- 為什麼要有引數
function getSum() {
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log();
}
// 雖然上面程式碼可以重複呼叫,但是隻能計算1-100之間的值
// 如果想要計算n-m之間所有數的和,應該怎麼辦呢?
- 語法:
// 函式內部是一個封閉的環境,可以通過引數的方式,把外部的值傳遞給函式內部
// 帶引數的函式宣告
function 函式名(形參1, 形參2, 形參...){
// 函式體
}
// 帶引數的函式呼叫
函式名(實參1, 實參2, 實參3);
-
形參和實參
- 形式引數:在宣告一個函式的時候,為了函式的功能更加靈活,有些值是固定不了的,對於這些固定不了的值。我們可以給函式設定引數。這個引數沒有具體的值,僅僅起到一個佔位置的作用,我們通常稱之為形式引數,也叫形參。
- 實際引數:如果函式在宣告時,設定了形參,那麼在函式呼叫的時候就需要傳入對應的引數,我們把傳入的引數叫做實際引數,也叫實參。
var x = 5, y = 6;
fn