JS2 函式與閉包

2021-09-25 22:52:23 字數 3921 閱讀 1250

1.js引入網頁

1. 外部引入type 可以省略

2.直接內嵌到網頁裡面 分為上部內嵌和下部內嵌 下部內嵌可以提高網頁的效能

2.定義變數 var 變數名稱
①變數在使用之前切記初始化

②未初始化會報錯 undefined / a is not defined 未定義型別

③變數的命名規則:駝峰式

3. 變數的資料型別(面試可能會詢問)
number    string    object(陣列,物件)   boolean    null    undefined( function)
typeof  檢測變數的資料型別

var a=10;

var b="nihao";

var c=true;

var d={}; //物件

var e=; //陣列

var f=null; //空物件引用

var g=undefined;

console.log(typeof a);//number

console.log(typeof b);//string

console.log(typeof c);//boolean

console.log(typeof d);//object

console.log(typeof e);//object

console.log(typeof f);//object

console.log(typeof g);//undefined

console.log(typeof showname);//function

function showname(){}

4.值型別和引用型別

①值型別

空間不變,值的型別在不停地替換

②引用型別

例如founction,objict({},[ ] , null) 對應引用空間,引用的位置是可以變化的

5.變數會被js 提前宣告(給變數乙個空間)1.函式也會被提前宣告

2.帶返回值的函式

function showinfo() 

var a = showinfo();

console.log(a); //a=1

3.帶參函式 ( 形參 實參)
function showname(name, ***, age) 

var name = showname("張三", "男", 18); //實參

console.log(name);

如果函式沒有引數列表 傳遞引數怎麼接收引數(***

argument 引數列表物件

function showdata() 

showdata("小花", 18);

4.匿名函式

不帶函式名稱的函式 ---------不提前宣告

list();     not a  function  報錯

var list = function ()

console.log(list(1, 2, 3));

5.自執行函式

其他函式呼叫後才會執行,自執行函式不用呼叫便會自己執行

執行函式自有形參,實參,有返回值(函式有的它都有)

//  有實參形參   返回值

var mm = (function (x, y) )(1, 2);

console.log(mm); //3

var temp = "object";

(function () )();

區域性變數:函式定義區

全域性變數 : 整個js

var a=10;               //全域性變數

function f1()

function f2()

f1();

f2()

閉包的概念:

① 使用別人的區域性變數

②閉包會大量占用記憶體 ,會導致網頁記憶體洩露

③盡量避免使用閉包 會將閉包的值存在記憶體裡面

關於閉包的例題

function f1()

function f2()

f2(); //10

function f1() 

return function ()

}var a1=f1(); // a1 = return function ()

a1();//1

t();

a1();//2

t();

a1();//3

function f1() 

}console.log(f1()()); //999 第乙個括號執行f1函式,第二個括號執行f1返回的f2

console.log(f1()); // return function f2()

function f1()

}f1()(); //11

var name="global";                //全域性變數

function foo()

function fooouter1()

fooouter1(); //global

function fooouter2()

foo();

}fooouter2();*/

function test() 

}value=3;

var a = test();

a(2);

//js裡面定義全域性變數 全域性方法 都是window屬性 瀏覽器最大物件

var m=0;

function f2(n)

temp();

//方法的重寫

//tostring object string tostring 重寫tostring 會自動執行string 類裡面的tostring

f2.tostring=function ()

/*console.log(typeof f2.tostring());*/

return f2;

}console.log(f2(1)); // 1 一次只能寫乙個,要是在寫m的值不為0,是已經執行過的m值

console.log(f2(1)(2)); // 3

console.log(f2(1)(2)(3)); // 6

JS函式與閉包

用簡潔的語法表達函式,箭頭函式不能使用arguments super new.target,沒有prototype屬性 函式名 引數 內部屬性和方法 函式名是乙個位址,指向函式。name屬性包含該函式的名稱 引數在內部表現為乙個陣列,所以呼叫時引數不受數量和種類的約束。沒有過載。可以在非箭頭函式內部...

js函式閉包

閉包的好處 希望乙個變數長期駐紮在記憶體當中 避免全域性變數的汙染 私有成員的存在 舉例 function f1 x var b f1 2 x 2 b 10 相當於b f2 b f2 故y 10 匿名函式 function 該方法經常在全域性作用域中被用在函式外部,從而限制向全域性作用域中新增過多的...

Js函式閉包

一 什麼是閉包 1.定義 如果在乙個內部函式裡,對在外部作用域 但不是全域性作用域 的變數進行引用,那麼內部函式就被認為是閉包。2.如何建立閉包 常見方式 在乙個函式內部建立另乙個函式。例 function createcomparsionfunction propertyname else if ...