首頁 >web前端 >前端問答 >javascript函數的寫法有哪些

javascript函數的寫法有哪些

青灯夜游
青灯夜游原創
2021-04-12 14:27:522601瀏覽

函數的寫法:1、“function 函數名(){}”;2、“var 函數名= function(){}”;3、“(function(){…})()” ;4、「(function(){…}())」;5、「$(function(){})」。

javascript函數的寫法有哪些

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

Javascript和其他程式語言相比比較隨意,所以Javascript程式碼中充滿各種奇葩的寫法,有時霧裡看花,本文講一下JavaScript函數的寫法。

在Javascript中只有物件。變數是對象,函數也是對象。只要你知道你的對像是什麼,用它的方式去使用就好了。

Javascript是弱型,對象,實例,函數,方法通用的。不需要差別那麼清楚。

1. 常規寫法:

#
// 函数的定义
function foo() {
    alert('常规写法');
}
// 函数的调用
foo()

這種寫法是大家最熟悉,最容易理解的寫法和呼叫方法,接著往下看

2. 匿名函數寫法

// 函数的定义
var foo = function(){
    alert('匿名函数定义');
}
// 函数的调用
foo()

這裡把功能定義弄成了匿名,省去了命名的痛苦,同時賦給了一個變量,變數就成了功能的代名詞,接著看

#3. 將方法作為一個物件##

// 定义
var test = {
    fun1: function(){  },
    fun2: function(){  }
}
// 调用
test.fun1();
test.fun2();

在Javascript中變數功能很強大,可以代表很多東西。

4. 建構子中為物件新增方法

// 给对象添加方法
var fun = function(){ };  // 定义函数对象
fun.prototype.test = function(){ 
    alert('这是在在foo函数上的原始对象上添加test方法,构造函数中用到');
}

// 调用
var myfun = new fun(); // 创建对象
myfun.test(); // 调用对象属性

透過prototype關鍵字新增方法。

5. 自執行函數( function(){…} )() 和( function(){…} () )

#前面講的函數定義和呼叫時分開的,這裡馬上講的定義和執行是一起進行的。

( function(){…} )() 和( function(){…} () ) 是兩種javascript立即執行函數的常見寫法,最初我以為是一個括號包裹匿名函數,再在後面加個括號呼叫函數,最後達到函數定義後立即執行的目的,後來發現加括號的原因並非如此。要理解立即執行函數,需要先理解一些函數的基本概念。

函數宣告、函數表達式、匿名函數

函數宣告:function fnName () {…};使用function關鍵字宣告一個函數,再指定一個函數名,叫函數宣告

函數表達式 var fnName = function () {…};使用function關鍵字宣告一個函數,但未給函數命名,最後將匿名函數賦予一個變量,叫做函數表達式,這是最常見的函數表達式語法形式。

匿名函數:function () {}; 使用function關鍵字宣告一個函數,但未為函數命名,所以叫匿名函數,匿名函數屬於函數表達式,匿名函數有很多作用,賦予一個變數則創建函數,賦予一個事件則成為事件處理程序或創建閉包等等。

函數宣告和函數表達式不同之處在於,

一、Javascript引擎在解析javascript程式碼時會'函數宣告提升'(Function declaration Hoisting)目前執行環境(作用域)上的函數聲明,而函數表達式必須等到Javascirtp引擎執行到它所在行時,才會從上而下一行一行地解析函數表達式,

二、函數表達式後面可以加括號立即呼叫函數,函數宣告不可以,只能以fnName()形式呼叫。以下是兩者差異的兩個例子。

// 方式1: ( function(){…} () )
(
     function(){alert('hello world, I am coming');}()
);
// 函数有参数的情况,有时为确保执行,前面加;
// 看到别人的插件,你会发现人家开头处加了一个";",这样就算页面js有错误,加载运行他的插件也能保证运行,如:
;(function(e){alert(e);}('hello world'));

// 方式2:( function(){…} )()
(function(){alert('hello');})();

// 有时在前面加运算符,常见的是!与void
!function(){alert('hello');}();
void function(){alert(2);}();

6 $(function(){})寫法

#$ (function(){/…<em>/});</em>是$(document).ready(function(){/…<em>/})</em>的簡寫形式,是在DOM載入完成後執行的回調函數,只會執行一次。

$( document ).ready(function() {
   console.log( "ready!" );
});

與如下寫法等價

$(function() {
   console.log( "ready!" );
});

在一個頁面中不同的js中寫的

$(function(){/…<em>/}); </em>函數,會依照js的排列順序依序執行。

【推薦學習:

javascript高階教學#

以上是javascript函數的寫法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn