摘要:在中,一個函數可以作為另一個函數的參數。我們可以先定義一個函數,然后傳遞,也可以在傳遞參數的地方直接定義函數。中函數的使用與類似。以上代碼中,我們把函數作為函數的第一個變量進行了傳遞。
在JavaScript中,一個函數可以作為另一個函數的參數。我們可以先定義一個函數,然后傳遞,也可以在傳遞參數的地方直接定義函數。
Node.js中函數的使用與Javascript類似。
function say(word) { console.log(word); } function execute(someFunction, value) { someFunction(value); } execute(say, "Hello");
以上代碼中,我們把 say 函數作為execute函數的第一個變量進行了傳遞。這里傳遞的不是 say 的返回值,而是 say 本身!
這樣一來, say 就變成了execute 中的本地變量 someFunction ,execute可以通過調用 someFunction() (帶括號的形式)來使用 say 函數。
當然,因為 say 有一個變量, execute 在調用 someFunction 時可以傳遞這樣一個變量。
node.js函數
1.不帶參的函數 function sayhello(){ console.log("Hello World"); } sayhello() //運行結果 Hello World 2.帶參的函數 function sayyouwrite(youwrite){ console.log(youwrite); } sayyouwrite("你好") //運行結果 你好 3.多個參數函數 function sayyouwrite2(youwrite1,youwrite2,youwrite3){ console.log(youwrite1+youwrite2+youwrite3); console.log(youwrite1); console.log(youwrite2); console.log(youwrite3); } sayyouwrite("你好") // 運行結果 // 你好!世界!中國! // 你好! // 世界! // 中國! 4.匿名函數 function execute(someFunc, value) { someFunc(value) } execute(function (world) { console.log(world) }, "Hello world")
函數的調用
1.js文件內部函數調用 var http = require("http") http.createServer(function (request, response) { // 發送 HTTP 頭部 // HTTP 狀態值: 200 : OK // 內容類型: text/plain response.writeHead(200, {"Content-Type": "text/html;charset=utf-8"}); if(request.url="/favicon.ico"){ fun1(response); response.end("") } }).listen(8888); function fun1(res) { console.log("我是fun1") res.write("你好,我是fun1|") } // 終端打印如下信息 console.log("Server running at http://127.0.0.1:8888/"); 2.調用其他js文件內的函數 var http = require("http") var fun2 = require("./m2.js") http.createServer(function (request, response) { // 發送 HTTP 頭部 // HTTP 狀態值: 200 : OK // 內容類型: text/plain response.writeHead(200, {"Content-Type": "text/html;charset=utf-8"}); if(request.url="/favicon.ico"){ fun1(response); fun2(response); response.end("") } }).listen(8888); function fun1(res) { console.log("我是fun1") res.write("你好,我是fun1|") } // 終端打印如下信息 console.log("Server running at http://127.0.0.1:8888/"); m2.js: function fun2(res) { console.log("我是fun2") res.write("你好,我是fun2") } module.exports = fun2;//只能引用一個函數 3.調用其他js文件中多個函數 var http = require("http") var funx = require("./m2.js") http.createServer(function (request, response) { // 發送 HTTP 頭部 // HTTP 狀態值: 200 : OK // 內容類型: text/plain response.writeHead(200, {"Content-Type": "text/html;charset=utf-8"}); if(request.url="/favicon.ico"){ fun1(response); funx.fun2(response); // funx.fun2(response); funx.fun3(response); response.end("") } }).listen(8888); function fun1(res) { console.log("我是fun1") res.write("你好,我是fun1|") } // 終端打印如下信息 console.log("Server running at http://127.0.0.1:8888/"); m2.js module.exports ={ fun2:function (res) { console.log("我是fun2") res.write("你好,我是fun2|") }, fun3:function (res) { console.log("我是fun3") res.write("你好,我是fun3") } }
同時我們也可以將m1.js文件里面的
????????
funx.fun2(response); funx.fun3(response); ? ? 替換為 ???????funx["fun2"](response); funx["fun3"](response); ? ? 或 ??? fname2 = "fun2"; fname3 = "fun3"; funx[fname2](response); funx[fname3](response);
函數傳遞是如何讓HTTP服務器工作的
var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(8888); 等同于 var http = require("http"); function onRequest(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); } http.createServer(onRequest).listen(8888);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/104830.html
摘要:最后一直調用函數判斷節點是否被轉移到隊列上,也就是中等待獲取鎖的隊列。這樣的話,函數中調用函數就會返回,導致函數進入最后一步重新獲取鎖的狀態。函數其實就做了一件事情,就是不斷嘗試調用函數,將隊首的一個節點轉移到隊列中,直到轉移成功。 ?我在前段時間寫了一篇關于AQS源碼解析的文章AbstractQueuedSynchronizer超詳細原理解析,在文章里邊我說JUC包中的大部分多線程相...
摘要:全局范圍生效,不需要。解析本地路徑首先來為你介紹對象,可以先在控制臺中看一下每一個模塊都有屬性來唯一標示它。通常是文件的完整路徑,但是在控制臺中一般顯示成。 showImg(https://segmentfault.com/img/remote/1460000009060869?w=1794&h=648); 本文作者:Jacob Beltran 編譯:胡子大哈 翻譯原文:http:...
摘要:問題什么是調用棧并且它是的一部分么調用棧當然是的一部分。為什么理解是重要的因為你在每個進程中只能獲取一個調用棧。它是一個從事件隊列中跳去事件的循環并且將它們的回調壓入到調用棧中。當調用棧為空的時候,事件循環可以決定下一步執行哪一個。 你并不知道Node 原文:You don’t know Node 譯者:neal1991 welcome to star my articles-tra...
Node.js從2009年誕生至今,已經發展了兩年有余,其成長的速度有目共睹。從在github的訪問量超過Rails,到去年底Node.jsS創始人Ryan Dalh加盟Joyent獲得企業資助,再到今年發布Windows移植版本,Node.js的前景獲得了技術社區的肯定。InfoQ一直在關注Node.js的發展,在今年的兩次Qcon大會(北京站和杭州站)都有專門的講座。為了更好地促進Node.j...
摘要:一個標準性的事件就是年的橫空出世。引擎快速處理能力和異步編程風格,讓開發者從多線程中解脫了出來。其次,通過異步編程范式將其高并發的能力發揮的淋漓盡致。它也僅僅是一個處理請求并作出響應的函數,并無任何特殊之處。 showImg(https://segmentfault.com/img/remote/1460000010819116); 在正式學習 Express 內容之前,我們有必要從大...
閱讀 724·2023-04-25 19:43
閱讀 3921·2021-11-30 14:52
閱讀 3794·2021-11-30 14:52
閱讀 3859·2021-11-29 11:00
閱讀 3790·2021-11-29 11:00
閱讀 3882·2021-11-29 11:00
閱讀 3562·2021-11-29 11:00
閱讀 6138·2021-11-29 11:00