第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于全局變量問題請求解答

關于全局變量問題請求解答

你這個糟老頭子 2019-09-12 19:01:44
最開始申明的index=0屬于全局變量,后續(xù)給左右按鈕綁定點擊事件的時候,index=index+1,這個時候得到的index是全局變量所以會覆蓋前面申明的index值,因為沒有加var所以是全局變量。但是如果在綁定函數(shù)里面改成var index=index+1的話,這個時候index就是局部變量了,無法覆蓋前面申明的index值了。這樣理解對嗎ar container = document.getElementById('container');var list = document.getElementById('list');var buttons = document.getElementById('buttons').getElementsByTagName('span');var prev = document.getElementById('prev');var next = document.getElementById('next');var index = 1;...next.onclick = function(){if(index == 5){index = 1;}else {index += 1;}showButton();animate(-600);}
查看完整描述

1 回答

已采納
?
橋本奈奈未

TA貢獻436條經(jīng)驗 獲得超108個贊

好像沒什么不對。不過我這里還是再解釋得清楚點吧。

在ES6之前,JS只有全局作用域和函數(shù)作用域,也就是所謂的scope,JS在訪問你代碼中的變量或函數(shù)時就是沿著作用域鏈查找的,如果你了解了JS的原型鏈的概念的話,作用域鏈應該也不難想象,

//?這里是全局作用域
var?index?=?1;

function?local()?{
????//?這里是函數(shù)的作用域
????var?index?=?2;
????//?在這個函數(shù)作用域中有一個index變量,所以執(zhí)行此函數(shù)時這里直接打印2
????console.log(index);
}

function?foo()?{
????//?在這里引擎同樣還是會在foo的函數(shù)中先查找index,很明顯函數(shù)中沒有index變量
????//?于是向上層作用域查找找到全局的index,打印1
????console.log(index);?
}

function?closure()?{
????//?這里就是JS中常被提起的閉包
????var?index?=?3;
????function?fn()?{
????????//?根據(jù)前兩個例子,可以知道fn中沒有index
????????//?那引擎往上查詢closure的作用域中是否有index,所以這里打印3,
????????//?如果把上面的那句index注釋掉則繼續(xù)往上查找全局作用域,則打印1
????????console.log(index);
????}
????fn();
}

local();
foo();
closure();

在代碼中我都是初始化一個新的作用域內(nèi)的變量,這只是為了闡述清楚作用域這個概念,理解了作用域,那么var不過是區(qū)分到底是聲明一個新變量還是重新賦值變量的值而已【ps:在同一作用域內(nèi)重復聲明等于賦值】,如果是賦值,那么賦值的變量就是作用域鏈上最先找到的變量,僅此而已。

查看完整回答
反對 回復 2019-09-12
  • 1 回答
  • 0 關注
  • 2203 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號