JavaScript 函數

来源:http://www.cnblogs.com/jimmzy/archive/2016/06/06/5563724.html
-Advertisement-
Play Games

JavaScript 函數 方法&函數 區別 1. function 是更通用的概念,如數學、編程 2. method 是面向對象中的概念,一般與類或對象成對出現 關係 1. 對象的屬性可以是任意類型 2. 對象的屬性如果是函數類型,它就叫做這個對象的方法 3. 所以方法的本質還是函數 函數的調用 ...


JavaScript 函數

方法&函數

區別

  1. function 是更通用的概念,如數學、編程
  2. method 是面向對象中的概念,一般與類或對象成對出現

關係

  1. 對象的屬性可以是任意類型
  2. 對象的屬性如果是函數類型,它就叫做這個對象的方法
  3. 所以方法的本質還是函數

函數的調用

  1. fun()
  2. obj.fun()
  3. fun.call()

函數的屬性和方法

  1. name
  2. length
  3. toString

作用域

變數不是哪裡都可以使用

全局變數(跨文件)

var n = 1;
function fn(){
    console.log(n);  // 1
}

局部變數(只能在函數內部訪問)

function fn1(){
    var n = 2;
}
console.log(n);  // Uncaught ReferenceError: number is not defined

函數作用域

  • 函數能獨立出一個作用域
var n = 1;
function f(){
    var n = 2;
    console.log(n); // 在當前作用域進行變數尋找
}
f();
console.log(n);  // 在全局作用域進行變數尋找
  • 函數裡面可以訪問函數外面
var n = 1;
var x = function(){
    console.log(n);
};

function f(){
    var n = 2;
    x();
}
f();
  • 自調用匿名函數
!function (){
    var n = 1;
    console.log(n);
};

~function (){
    var n = 1;
    console.log(n);
};

(function(){
    var n = 1;
    console.log(n);
}());
  • 閉包
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <ul>
    <li>aaa</li>
    <li>bbb</li>
    <li>ccc</li>
    <li>ddd</li>
    <li>eee</li>
  </ul>
  <script>
    var items = document.getElementsByTagName('li'),
            i = 0;
    for (i; i < items.length; i++) {
      items[i].onclick = function(e){
        alert(i);
      };
    }
  </script>
</body>
</html>
function fn1(){
  var a = 1;
  
  function fn2(){
    a += 1;
    console.log(a);
  }
  
  return fn2; 
}

var r = fn1();
r();    // 2
r();    // 3
r();    // 4
  • 回調(callback)給別人調用的函數
function trySomething(callback){
  console.log('some thing');
  callback('成功');
}

trySomething(function(value){
  console.log(value);
});

setTimeout(callback, time),一段時間後將 callback 放入執行清單
JavaScript 引擎做完手頭的事情才會去看執行清單

  • 同步

    console.log(1);
    console.log(2);
    console.log(3);
  • 非同步

console.log(1);
setTimeout(function(){
  console.log(2);
},0);
console.log(3);

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 看了網上一些文章,做了點總結,順便再加點自己的東西,簡單的說下。 1.利用瀏覽器的304緩存,但是304叫協商緩存,還是需要與伺服器通信一次 2.強制使用瀏覽器使用本地緩存(cache-control/expires),但是問題來了,不讓瀏覽器發資源請求,資源怎麼更新。 3.使用版本號,類似於a.c ...
  • 一、 java的基本程式設計結構 (一) java共有8種基本類型:4種整型,2種浮點類型,1種char,1種boolean。 1) 4種整型:byte(1)、short(2)、int(4)、long(8)。 2) int最常用,byte和short常用在底層的文件處理或者需要控制占用存儲空間量的大 ...
  • 每次回到宿舍想看部電影才發現很長時間沒有去bt站淘種子了, 然而天天去站上找適合自己類型的電影又是一件費時又費力的事兒, 所以周末花時間寫了一個可配置的爬子, 能夠根據不同人的不同需求去自動下載種子文件, 並且能夠避免不同分類中的重覆電影 後期還會加入下載隊列的功能, 在檢測宿舍無人用網的時候開啟b ...
  • 前幾天在學習js的時候,碰到了這樣一道面試題,要求計算出給你一個隨機亂敲的一個字元串,要求在其中找出那個字元出現的次數最多,以及出現的個數。 這你有兩種方案,請大家仔細閱讀,有可能在你將來的面試中會碰到。 一: 二: 謝!轉:http://www.cnblogs.com/heyongjun1997/ ...
  • DCI in C++ 本文講解的C++的DCI編程框架,目前作為 "ccinfra" 的一個組件提供,可訪問 "https://github.com/MagicBowen/ccinfra" 獲取具體源碼。ccinfra中的DCI框架原創者是袁英傑先生(Thoughtworks),我們在兩個大型電信系 ...
  • × 目錄 [1]原始表達式 [2]複雜表達式 前面的話 一般,關於javascript基礎語法,人們聽得比較多的術語是操作符和語句。但,其實還有一個術語經常使用,卻很少被提到,這就是javascript表達式(expression)。本文將詳細介紹javascript表達式,表達式分為原始表達式和復 ...
  • javascript之數組 學習要點: 數組的介紹 定義數組 數組元素 數組的方法 一、數組的介紹 數組中的元素類型可以是數字型、字元串型、布爾型等,甚至也可以是一個數組。 二、定義數組 1、通過數組的構造函數來定義數組: var arr=new Array(); var arr=new Array ...
  • 先說一下我遇到的問題吧,我之前的一個函數想調用上一個函數的返回值,但是它的返回值一直為空,後來翻了一些資料才明白是非同步請求在作怪,不多說,看例子,這是我之前有返回值函數的代碼: Java代碼 function get_no_order_array() { var order_info = show_ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...