javascript函數的寫法有:1、常規寫法,「function 函數名稱(){js程式碼}函數名稱()」;2、$(function(){})寫法,「$(物件) .ready(function() {js程式碼});」。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
Javascript和其他程式語言相比比較隨意,所以Javascript程式碼中充滿各種奇葩的寫法,有時霧裡看花,本文講一下JavaScript函數的寫法。
在Javascript中只有对象。 变量是对象,函数也是对象。 只要你知道你的对象是什么,按照它的方式去使用就可以了。 Javascript是弱类型,对象,实例,函数,方法通用的。不需要区别那么清楚。
// 函数的定义 function foo() { alert('常规写法'); } // 函数的调用 foo()
這種寫法是大家最熟悉,最容易理解的寫法和呼叫方法,接著往下看
// 函数的定义 var foo = function(){ alert('匿名函数定义'); } // 函数的调用 foo()
這裡把功能定義弄成了匿名,省去了命名的痛苦,同時賦給了一個變量,變數就成了功能的代名詞,接著看
// 定义 var test = { fun1: function(){ }, fun2: function(){ } } // 调用 test.fun1(); test.fun2();
在Javascript中變數功能很強大,可以代表很多東西。
// 给对象添加方法 var fun = function(){ }; // 定义函数对象 fun.prototype.test = function(){ alert('这是在在foo函数上的原始对象上添加test方法,构造函数中用到'); } // 调用 var myfun = new fun(); // 创建对象 myfun.test(); // 调用对象属性
透過prototype關鍵字新增方法。
前面講的函數定義和呼叫時分開的,這裡馬上講的定義和執行是一起進行的。
( 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);}();
#$ (function(){/…/});是$(document).ready(function (){/…/})的簡寫形式,是在DOM載入完成後執行的回呼函數,並且只會執行一次。
$( document ).ready(function() { console.log( "ready!" ); });
與如下寫法等價
$(function() { console.log( "ready!" ); });
在一個頁面中不同的js中寫的$(function(){/…/});函數,會根據js的排列順序依次執行。
【推薦學習:javascript高階教學】
#以上是javascript函數怎麼寫的詳細內容。更多資訊請關注PHP中文網其他相關文章!