從零開始學 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、返回值
- 如果函式沒有顯示的使用 return 語句 ,那麼函式有預設的返回值:undefined
- 如果函式使用 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 之 JavaScript(一)JavaScript概述
大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、JavaScr
從零開始學 Web 之 BOM(三)offset,scroll,變速動畫函數
樣式 清理 java mar dde sof mov har width 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:
從零開始學 Web 之 Ajax(三)Ajax 概述,快速上手
lan 技術分享 php 概述 由於 val asc logs 更新 大家好,這裏是「 從零開始學 Web 系列教程 」,並在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公眾號:Web前端之巔 博客園:ht
從零開始學 Web 之 ES6(三)ES6基礎語法一
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 之 BOM(三)offset,scroll,變速動畫函式
一、直接使用 document 獲取的元素 // 獲取 body document.body; // 獲取 title document.title; // 獲取的是 title 中的值 // 獲取 html document.documentElement; 1、案例:圖片跟著滑鼠移動 <!DOC
從零開始學 Web 之 CSS(三)連結偽類、背景、行高、盒子模型、浮動
大家好,這裡是「 Daotin的夢囈 」從零開始學 Web 系列教程。此文首發於「 Daotin的夢囈 」公眾號,歡迎大家訂閱關注。在這裡我會從 Web 前端零基礎開始,一步步學習 Web 相關的知識點,期間也會分享一些好玩的專案。現在就讓我們一起進入 Web 前端學習的冒險之旅吧! 一、連結偽類 a:
從零開始學 Web 之 DOM(三)innerText與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 之 DOM(一)DOM的概念,對標簽操作
關註 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前端之巔 博客