1. 程式人生 > >從零開始學 Web 之 JavaScript(三)函式

從零開始學 Web 之 JavaScript(三)函式

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧!

一、函式

1、函式的定義

// 第一種
function fn1(){
    console.log("我是第一種定義方法!");
}

// 第二種
var fn2 = function (){
    console.log("我是第二種定義方法!");
};  // 注意分號

function (){
   console.log("我是第二種定義方法!");
}();  // 第二種方式的呼叫方式之一:函式的自呼叫

//第三種
var fn3 = new Function("console.log('我是第三種定義方法!')");

第一種:(函式的宣告)第一種定義方法最強大,定義完畢後,在哪裡使用都可以,無位置限制。
第二種:(函式表示式:匿名函式) 後兩種定義方法是有侷限性的。(使用函式必須在定義函式之後)

2、函式的呼叫

函式名();

3、函式名

  • 要遵循駝峰命名法。
  • 不能同名(函式過載),否則後面的函式會覆蓋前面的函式。
//列印函式名,就等於列印整個函式。
console.log(fn);
//列印執行函式,就等於列印函式的返回值。
console.log(fn()); 

4、形參和實參

  • 形參不需要寫 var.
  • 形參的個數和實參的個數可以不一致 。

5、返回值

  1. 如果函式沒有顯示的使用 return 語句 ,那麼函式有預設的返回值:undefined
  2. 如果函式使用 return 語句,但是 return 後面沒有任何值,那麼函式的返回值也是:undefined.

6、變數和作用域

全域性變數:在 script 使用 var 定義的變數(所有的 script 共享其全域性性,js 裡面沒有塊級作用域概念,只有全域性作用域和區域性作用域)。

隱式全域性變數:在 script 沒有 var 的變數。

function fn(){
  var a = b = c = 1;       // b和c就是隱式全域性變數(等號)
  var a = 1; b = 2; c = 3;   // b和c就是隱式全域性變數(分號)
  var a = 1 , b = 2 , c = 3;  // b和c就不是隱式全域性變數(逗號)
}

(全域性變數是不能被刪除的,隱式全域性變數是可以被刪除的)

var num1 = 10;
num = 20;
delete num1;
delete num2;
console.log(typeof num1); // number
console.log(typeof num2); // undefined

區域性變數函式內部用 var 定義的變數和形參。

6.1、變數宣告提升(預解析)

作用:檢視語法錯誤。js的解析器在頁面載入的時候,首先檢查頁面上的語法錯誤。把變數宣告提升起來。(變數宣告提升和函式整體提升)

6.2、變數的提升

只提升變數名,不提升變數值。

consolas.log(aaa);// 列印的結果是 undefined ,因為只提升變數名,不提升變數值。
var aaa = 111; 

在函式範圍內,照樣適用。

6.3、函式的提升

function 直接定義的方法:整體提升(上面說的第一種函式定義的方法).

fn();

var aaa = 111;
function fn(){
    //變數宣告提升在函式內部照樣實用。
    //函式的就近原則(區域性變數作用域),列印的aaa不是111,而是 undefined。
    console.log(aaa); // undefined
    var aaa = 222;
}

預解析會分塊:

多對的 script 標籤中函式重名的話,預解析不會衝突。也就是預解析的作用域是每一個的 script 標籤。

var先提升,function再提升:

示例:

console.log(a); // 輸出a函式體
function a() {
    console.log("aaaaa");
}
var a = 1;
console.log(a); // 輸出1

列印第一個結果的時候,var會提升,之後 function 再提升,但是函式a和變數a重名,function的a在後面覆蓋掉變數a,所以第一個輸出 a 函式體.

第二個前面var a = 1;提升之後,這個位置就相當於只有 a = 1; 賦值,所以第二個列印1.

6.4、匿名函式

作用大致如下:

//1.直接呼叫
(function (){
    console.log(1);
})();

//2.繫結事件
document.onclick = function () {
    alert(1);
}

//3.定時器
setInterval(function () {
    console.log(444);
},1000);

相關推薦

開始 Web JavaScript函式

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、函式 1、函式

開始 Web JavaScript陣列

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、陣列 1、陣列

開始 Web JavaScript變數

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、變數 1、變數

開始 Web JavaScript面向物件

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、面向物件 1、

開始 Web JavaScriptJavaScript概述

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、JavaScr

開始 Web BOMoffset,scroll,變速動畫函數

樣式 清理 java mar dde sof mov har width 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:

開始 Web AjaxAjax 概述,快速上手

lan 技術分享 php 概述 由於 val asc logs 更新 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:ht

開始 Web ES6ES6基礎語法一

arr 方法 foreach reac 公眾 存在 lock 數組名 回調函數 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博

開始 Web jQuery元素操作,鏈式程式設計,動畫方法

一、使用css操作元素樣式 1、常規寫法 $("#dv").css("width", "200px"); $("#dv").css("height", "100px"); $("#dv").css("background", "red"); 2、鏈式寫法 $("#dv").css("width", "20

開始 Web BOMoffset,scroll,變速動畫函式

一、直接使用 document 獲取的元素 // 獲取 body document.body; // 獲取 title document.title; // 獲取的是 title 中的值 // 獲取 html document.documentElement; 1、案例:圖片跟著滑鼠移動 <!DOC

開始 Web CSS連結偽類、背景、行高、盒子模型、浮動

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、連結偽類 a:

開始 Web DOMinnerText與innerHTML、自定義屬性

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、相容程式碼 1

開始 Web HTML5網路監聽,全屏,檔案讀取,地理定位介面,應用程式快取

一、網路監聽介面 ononline:網路連通時觸發 onoffline:網路斷開時觸發 window.addEventListener("online", function(){}); window.addEventListener("offline", function(){}); 二、全屏介面 全

開始 Web CSS3漸變,background屬性

一、漸變 漸變是CSS3當中比較豐富多彩的一個特性,通過漸變我們可以實現許多炫麗的效果,有效的減少圖片的使用數量,並且具有很強的適應性和可擴充套件性。可分為線性漸變、徑向漸變。 1、線性漸變 線性漸變:指沿著某條直線朝一個方向產生漸變效果。 語法: background: linear-gradient(

開始 Web HTML表單

大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、表格 1

開始 Web DOMDOM的概念,對標簽操作

關註 1.5 pan 什麽 tin p標簽 nod text == 大家好,這裏是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關註。在這裏我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,

開始 Web DOM節點

def clas scrip while p標簽 設置 ner 操作 text 大家好,這裏是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關註。在這裏我會從 Web 前端零基礎開始,一步步學習 Web 相

開始 Web jQuery獲取和操作元素的屬性

eight images idt 隱藏 lis 屬性 ner master lin 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔

開始 Web jQuery為元素綁定多個相同事件,解綁事件

png 好用 添加 方式 執行 存在 區別 也會 地址 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:http://ww

開始 Web jQuery事件冒泡,事件參數對象,鏈式編程原理

eval uri turn 定位 return 也會 否則 ont sele 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客