小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

JavaScript——函數(shù)

 Coder編程 2021-09-17

一、函數(shù)的定義與調(diào)用(與python類(lèi)同) 

// 無(wú)參函數(shù)
function f1() {
  console.log("Hello world!");
};
f1();

// 有參數(shù)函數(shù)
function f2(a, b) {
  console.log(arguments);  // 內(nèi)置的arguments對(duì)象
  console.log(arguments.length);

  console.log(arguments[0],arguments[1]);
  console.log(a, b);
};
f2(10,20);

// 帶返回值的函數(shù)
function sum(a, b){
  return a + b;
}
sum(1, 2);  // 調(diào)用函數(shù)

// 匿名函數(shù)
var sum = function(a, b){
  return a + b;
}
sum(1, 2);

// 立即執(zhí)行函數(shù)
(function(a, b){
  return a + b;
})(1, 2);

 

二、函數(shù)中的arguments參數(shù)

function add(a,b){
  console.log(a+b);
  console.log(arguments.length)
}

add(1,2)   //  3  2 

注意:函數(shù)只能返回一個(gè)值,如果要返回多個(gè)值,只能將其放在數(shù)組或?qū)ο笾蟹祷?/span>

三、函數(shù)的全局變量和局部變量

#局部變量:

在JavaScript函數(shù)內(nèi)部聲明的變量(使用 var)是局部變量,所以只能在函數(shù)內(nèi)部訪問(wèn)它(該變量的作用域是函數(shù)內(nèi)部)。只要函數(shù)運(yùn)行完畢,局部變量就會(huì)被刪除。

#全局變量:
在函數(shù)外聲明的變量是全局變量,網(wǎng)頁(yè)上的所有腳本和函數(shù)都能訪問(wèn)它。

#變量生存周期:
JavaScript變量的生命期從它們被聲明的時(shí)間開(kāi)始。
局部變量會(huì)在函數(shù)運(yùn)行以后被刪除。
全局變量會(huì)在頁(yè)面關(guān)閉后被刪除。

四、作用域

首先在函數(shù)內(nèi)部查找變量,找不到則到外層函數(shù)查找,逐步找到最外層。另外函數(shù)的作用域關(guān)系是在定義階段就固定死的,與調(diào)用位置無(wú)關(guān)

//舉例,用法 跟python查找變量的順序一致
var city = "BeiJing";
function f() {
  var city = "ShangHai";
  function inner(){
    var city = "ShenZhen";
    console.log(city);
  }
  inner();
}

f();  //ShenZhen


var city = "BeiJing";
function Bar() {
  console.log(city);
}
function f() {
  var city = "ShangHai";
  return Bar;
}
var ret = f();
ret();  // BeiJing


var city = "BeiJing";
function f(){
    var city = "ShangHai";
    function inner(){
        console.log(city);
    }
    return inner;
}
var ret = f();
ret();  //ShangHai

五、javascript中的變量提升和函數(shù)提升

1、在js中只有兩種作用域

  全局作用域、函數(shù)作用域

  ps:在ES6之前,js是沒(méi)有塊級(jí)作用域。

2、什么是沒(méi)有塊級(jí)作用域?

 3、什么是變量提升?

在js中,代碼執(zhí)行時(shí)分兩步走:1、解析 2、一步一步執(zhí)行

那么變量提升就是變量聲明會(huì)被提升到作用域的最頂上去,也就是該變量不管是在作用域的哪個(gè)地方聲明的,都會(huì)提升到作作用域的最頂上去。

 

 舉例分辨:

 

4、什么是函數(shù)提升?

舉例1:

fn();  //此處可以正常調(diào)用
console.log(fn);
function fn(){
    console.log("哈哈哈哈")
}
fn(); //此處也可以正常調(diào)用

//輸出結(jié)果:

哈哈哈哈
{
    console.log("哈哈哈哈")
}
哈哈哈哈


//注意:函數(shù)聲明式,會(huì)將函數(shù)的聲明和定義一起提升到作用域的最頂上去。

舉例2:

函數(shù)表達(dá)式聲明的函數(shù)

console.log(fn); //undefined
var fn=function (){
    console.log("舉例2")
};
console.log(fn);

//輸出結(jié)果:
? (){
    console.log("舉例2")
}

舉例3:

如果函數(shù)聲明和變量聲明使用的是同一個(gè)變量名稱(chēng),函數(shù)聲明的優(yōu)先級(jí)高于變量聲明的優(yōu)先級(jí)

console.log(fn);
function fn(){"舉例3"};
var fn="hello";
console.log(fn);

//輸出結(jié)果:
? fn(){"舉例3"}
hello

總結(jié):

#1:所有的聲明都會(huì)提升到作用域的最頂上去。

#2:同一個(gè)變量只會(huì)聲明一次,其他的會(huì)被忽略掉。

#3:函數(shù)聲明的優(yōu)先級(jí)高于變量申明的優(yōu)先級(jí),并且函數(shù)聲明和函數(shù)定義的部分一起被提升。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多