1.接收任意個變數
function functionname(arguments)
{
…...
}
2.接收物件
function showText(argObject)
{
….
}
showText({text: ‘Hello world’, bold:true })
3.可以不傳參數入function,預設為undefined
function functionName(someVar)
{
if(typeof someVar == ‘undefined’ )
代表沒傳
}
4.變數作用域
-
在function 內宣告var就有function區域作用
-
若在function 外宣告變數即使加了var 也是全域變數
-
若未在function 內宣告var而使用變數,將會導致此變數成為global variable
function functionName()
{
shouldBeLocalVar = ‘test’; //忘了加var成為全域變數
}
//but you can use shouldBeLocalVar at here
-
區域變數與全域變數同名會怎樣?
function functionName()
{
var x = 3;
console.log(‘in the function’+x);
}
var x = 2;
console.log(‘in the function’+x); // x= 2
functionName(); //x = 3
console.log(‘in the function’+x);//x = 2
5.參數值傳遞方式
function 參數傳入方式有兩種:
1.call by value : int , bool ,string
function willNotChange(x)
{
console.log(‘first:’+x)
x=2;
console.log(‘second:’+x)
}
var y = 1;
console.log(y); // y = 1
willNotChange(y); // x = 1, x = 2 ,在函數內用過 y 這個變數
console.log(y); // y = 1 注意這裡因為是call by value 所以不會改變
2.call by address : object , array
function willChange(x)
{
console.log(‘first:’+x.num)
x=2;
console.log(‘second:’+x.num)
}
var y = {num : 1}
console.log(y.num); // y = 1
willNotChange(y); // x = 1, x = 2 ,在函數內用過 y 這個變數
console.log(y.num); // y = 2 注意這裡因為是call by address 所以會改變
6.區域以及全域變數在function內的情形討論
function functionName(someVar)
{
someVar = true;
console.log(someVar);
}
var someVar = false; //宣告於函數外即使有var也是全域變數
console.log(someVar); // someVar = false
finctionName(someVar); // someVar = true
// someVar = false 因為bool為call by value所以function內的someVar跟function外的someVar,是分別指在不同的memory即使兩個名子相同
console.log(someVar); //someVar = false
7.JS中 function 就是物件
8.作為變數的function,可以把function 指定給一個變數
var getTwo = function() {return 2};
getTwo(); // 2
9.將function 當成parameter傳給另一個function
var someFunction = function(){ };
someOtherFunction(someFucntion);
10.this關鍵字
var chapter = {
num : 7,
title : ‘Hello world’,
getNum : function {return num} //這行會有問題(num is undefined)
}
chapter.getNum();
解決:
var chapter = {
num : 7,
title : ‘Hello world’,
getNum : function {return this.num}
}
留言列表