js學習二函式
一、定義函式的兩種方法:
1.函式宣告
function func(){
}
2.函式表示式
將匿名函式賦值給一個變數
var func = function(){
Uncaught ReferenceError: arguments is not defined
所以預設值應該是 undefined
js函式中有個儲存引數的陣列arguments ,所有函式獲得的引數會被編譯器挨個儲存到這個陣列中。
程式碼:
注意:
當引數是原始資料型別時,是值傳遞,原始數值不變;
當引數是物件資料型別時,是引用傳遞,會改變原有的物件;
三、作用域:
程式碼:
1.函式宣告
function func(){
}
2.函式表示式
將匿名函式賦值給一個變數
var func = function(){
}
二、函式引數:
函式裡的自帶引數arguments,注意只在函式裡才有,外部沒有。arguments是一個陣列,輸出時報錯:Uncaught ReferenceError: arguments is not defined
所以預設值應該是 undefined
js函式中有個儲存引數的陣列arguments ,所有函式獲得的引數會被編譯器挨個儲存到這個陣列中。
程式碼:
<pre name="code" class="html"><span style="font-size:14px;">var add = function(num1, num2) {
return num1+num2;
}
document.write('指定引數')
document.write(add(2))
// NaN
document.write(add(2,5))
// 7
document.write(add(2,5,6))
// 7
var addOpt = function () {
document.write(arguments[0])
var length = arguments.length,
sum = 0,
parameter;
for (var i=0;i<length;i++) {
parameter = arguments[i];
sum = sum + parameter;
}
return sum;
}
document.write('多引數')
document.write(addOpt(2))
// 2
document.write(addOpt(2,5))
// 7
document.write(addOpt(2,5,6))
// 13
document.write(addOpt(2,5,6,2))
// 15
document.write(arguments.length)</span>
注意:
當引數是原始資料型別時,是值傳遞,原始數值不變;
當引數是物件資料型別時,是引用傳遞,會改變原有的物件;
三、作用域:
限制了變數起作用的範圍
四、作為物件屬性
可以利用this指定當前物件
五、建構函式
提高了產生同型別物件的時間和程式碼量
程式碼:
<span style="font-size:14px;"><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Construction</title>
</head>
<body>
<script >
function Point(x, y) {
this.x = x;
this.y = y;
this.move = function(stepX, stepY) {
this.x += stepX;
this.y += stepY;
}
}
var point1 = new Point(1,1)
var point2 = new Point(2,2)
var point3 = new Point(3,3)
//point的值就是this,this是返回值
document.write('ponit');
document.write(point1);
// [object object]
document.write(point1.x)
point1.move(2,1) //(3,2)
point2.move(2,1) //(4,3)
point3.move(2,1) //(5,4)
</script>
</body>
</html></span>
六、原型程式碼:
<span style="font-size:14px;"><!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ProtoType</title>
</head>
<body>
<script >
function Point(x, y) {
this.x = x;
this.y = y;
};
Point.prototype.move = function (stepX, stepY) {
this.x += stepX;
this.y += stepY;
};
// 公共屬性或者方法
var point = new Point(1,1);
point.move(2,1);
console.log(point);
// document.write('point.x');
</script>
</body>
</html></span>
原型可以設定建構函式的例項共有的方法或者屬性:Point.prototype.func(){}
注意prototype的寫法不是protoType,否則會報錯:
Uncaught TypeError: Cannot set property 'move' of undefined
相關文章
- 函式學習二函式
- 字串函式學習二字串函式
- TypeScript學習(二)—— 函式TypeScript函式
- JS的學習理解--->函式JS函式
- C++學習筆記(二)——函式C++筆記函式
- js純函式學習筆記(一)JS函式筆記
- Js函式和物件學習體會JS函式物件
- PHP 第二週函式學習記錄PHP函式
- 廖雪峰JS學習總結-函式篇JS函式
- js變數與函式常識學習JS變數函式
- 函式學習函式
- 【Mysql 學習】日期函式函式MySql函式
- ES6深入學習(二)關於函式函式
- JavaScript學習筆記(二)——函式和陣列JavaScript筆記函式陣列
- 【GO學習二】包,函式,常量和變數Go函式變數
- spark RDD的學習,filter函式的學習,split函式的學習SparkFilter函式
- MySQL函式學習(一)-----字串函式MySql函式字串
- 函式學習五函式
- 函式學習六函式
- 函式學習三函式
- 函式學習四函式
- 函式的學習函式
- 學習Rust 函式Rust函式
- 學習dump函式函式
- ORACLE函式學習Oracle函式
- PostgreSQL學習手冊(函式和操作符<二>)SQL函式
- JS學習理解之閉包和高階函式JS函式
- 字串函式學習三字串函式
- 字串函式學習一字串函式
- 【Mysql 學習】流程函式MySql函式
- 分析函式的學習函式
- iOS學習筆記42 Swift(二)函式和閉包iOS筆記Swift函式
- 一個 JSer 的 Dart 學習日誌(一):函式JSDart函式
- 學習javaScript必知必會(1)~js介紹、函式、匿名函式、自呼叫函式、不定長引數JavaScriptJS函式
- numpy學習回顧-數學函式及邏輯函式函式
- Java學習隨筆(函式式介面)Java函式
- 深度學習——loss函式的學習筆記深度學習函式筆記
- 函式 - Go 學習記錄函式Go