JavaScript學習筆記(一)函數

來源:互聯網
上載者:User

標籤:列表   子函數   return   highlight   自訂對象   val   堆棧   not   tac   

function myFunc(theObject) {  theObject.make = "Toyota";}var mycar = {make: "Honda", model: "Accord", year: 1998},var x, y;x = mycar.make;     // x擷取的值為 "Honda"myFunc(mycar);y = mycar.make;     // y擷取的值為 "Toyota"                    // (make屬性被函數改變了)

 

函式宣告:1.函數名稱 2.參數列表 3.函數功能

定義一個函數:

var number = 10;
function square(number){
  number = number*number; return number ; }
var x = square(number);
console.log(number);//10
console.log(x);//100

  函數名 square 

  參數number

  函數功能 返回number^2

   原始參數 和 對象作為參數(上面兩組代碼為執行個體)

1.當原始參數作為函數參數的時候,函數內部改變該參數不影響全域或調用函數

2.如果參數為一個對象,Array或者自訂對象,函數內部改變該對象屬性,則這樣的改變對函數外部可見。

函數運算式

 

/*匿名函數的函數運算式*/var square = function(number) {  return number * number};var x = square(4);/*有函數名的函數運算式*/var factorial = function fac(n) {return n<2 ? 1 : n*fac(n-1)};console.log(factorial(3));

 

  函數作為參數

function map(f,a) {  var result = [], // 建立一個新的數組      i;  for (i = 0; i != a.length; i++)    result[i] = f(a[i]);  return result;}

  函數f()作為map()函數的參數 

map(function(x) {return x * x * x}, [0, 1, 2, 5, 10]);

  返回 [0, 1, 8, 125, 1000]。

function hoisting即函數提升僅作用於函式宣告 不能用於函數運算式

console.log(square(5));/* ... */function square(n) { return n*n }

  

console.log(square); // square is hoisted with an initial value undefined.console.log(square(5)); // TypeError: square is not a functionvar square = function (n) {   return n * n; }

  函數範圍

函數可以訪問自己內部定義的變數或者函數,全域可以訪問所有在全域範圍中定義的變數或函數 

子函數可以訪問父函數內部定義的變數或者其父函數有權訪問的其他變數。

範圍和函數堆棧(scope and function stack)

遞迴(recursion)

一個函數可以指向並調用自身的三種方法:

1.函數名

2.arguments.callee

3.範圍下的一個指向該函數的變數名

嵌套函數和閉包(nested functions and closures)

你可以在一個函數裡面嵌套另外一個函數。嵌套(內部)函數對其容器(外部)函數是私人的。它自身也形成了一個閉包(closure)。一個閉包是一個可以自己擁有獨立的環境與變數的的運算式(通常是函數)。

既然嵌套函數是一個閉包,就意味著一個嵌套函數可以”繼承“容器函數的參數和變數。換句話說,內建函式包含外部函數的範圍。

可以總結如下:

  • 內建函式只可以在外部函數中訪問。
  • 內建函式形成了一個閉包:它可以訪問外部函數的參數和變數,但是外部函數卻不能使用它的參數和變數。

 

JavaScript學習筆記(一)函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.