close

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}

}






 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 melomelo1988 的頭像
    melomelo1988

    melo 唐

    melomelo1988 發表在 痞客邦 留言(0) 人氣()