JS 函式 學習筆記

2022-02-21 06:16:12 字數 1631 閱讀 8281

函式是一段可以反覆呼叫的**塊。函式還能接受輸入的引數,不同的引數會返回不同的值

作用域(scope)指的是變數存在的範圍,在 es5 的規範中只有全域性作用域和函式作用域,es6 新增了塊級作用域。

全域性作用域:變數在整個程式中一直存在,所有地方都可以讀取

函式作用域:變數只在函式內部存在,外部無法訪問函式內部的變數,除了使用閉包。

function f1() 

return f2;

}var result = f1();

result(); // 999

函式f2和變數n的組合就形成了乙個閉包。

「函式」和「函式內部能訪問到的變數」(也叫環境)的總和,就是乙個閉包

閉包的作用:

閉包常常用來「間接訪問乙個變數」。換句話說,「隱藏乙個變數」,讓函式執行形成的私有作用域,保護裡面的變數不受外界干擾的機制。

var api = (function() 

var 死一條命 = function()

return

}())

api.a() // 當前剩餘51

api.b() // 當前剩餘50

api.b() // 當前剩餘49

參考閱讀 js 中的閉包是什麼

(function()());

// 或者

(function())();

通常情況下,只對匿名函式使用這種「立即執行的函式表示式」。

它的目的有兩個:

一是不必為函式命名,避免了汙染全域性變數;

二是 iife 內部形成了乙個單獨的作用域,可以封裝一些外部無法讀取的私有變數。

題目一

var a = 1

function f1()

f1.call()

// 遇到**題,請先提公升宣告!

// 遇到**題,請先提公升宣告!

// 遇到**題,請先提公升宣告!

var a = 1

function f1()

f1.call()

// 答案: alert 乙個 undefined

題目二
var a = 1

function f1()

function f2()

f1.call()

// 函式本身也是乙個值,也有自己的作用域。

// 它的作用域與變數一樣,就是其宣告時所在的作用域,與其執行時所在的作用域無關。

// 答案:輸出 1

題目三
var litags = document.queryselectorall('li')

for(var i = 0; i}// 答案 6

// 如何解決?

// 1. 使用 let 宣告變數 i

// 2. 使用立即執行函式

var litags = document.queryselectorall('li')

for (var i = 0; i < litags.length; i++)

})(i);

}

js 函式(學習筆記)

建構函式 普通函式 匿名函式 閉包反正都是函式 放一起講吧 其實方法也是物件 js裡啥都是物件 物件是啥 物件是 帶有屬性和方法的特殊資料型別 比如 定義乙個物件 var main name girl func function alert 1 物件的屬性和方法 那普通函式 function add...

js函式學習

函式學習 作用 功能 塊的封裝。減少 的冗餘。1 函式的宣告 方式一 function 函式名 形參名1,形參名2 方式二 var 函式名 new function 形參1 形參2 函式執行體 注意 此宣告表明在js中函式是作為物件存在的。方式三 var 變數名 function 形參名1,形參名2...

JS函式學習

數學函式 1 math.random 為取隨機數0 1之間的 0可以取到,1取不到 2 math.pi為3.1415926.圓周率 3 math.max 為取陣列內的最大值 4 math.min 為取陣列內的最小值 時間函式 注意 js獲取當前時間 即主機上顯示的時間 1.取當前的完整時間年月日星期...