动态

详情 返回 返回

ES6/7/8等新屬性 - 动态 详情

var let const

第一件事為什麼用let 和 const。因為曾經的var不明確,重複之後就直接覆蓋
而let如果有撞衫直接報錯,const也一樣

var i = 0
    ...
var i = 345  
//不報錯,覆蓋而已


let i = 123
let i = 456
//換成 let就顯示:Uncaught SyntaxError: Identifier 'i' has already been declared

第二件事:var 聲明將成為Windows的對象屬性,let卻不是

var a = 250
console.log(window.a) //返回250

let a = 250
console.log(window.a) //返回250

而const 是常量,不能重複不能修改
然是我下一句,不能變量,但是可以對象
説白了他只能控制name,name的下一級我管不了

const a = 0
a = 300
//報錯:Uncaught TypeError: Assignment to constant variable.

const a = {
  name:"常吉孔"
}
a.name = "直播間"

function

就是函數,函數有三種
第一個:函數聲明
第二個:函數表達式
第三個:箭頭函數, 但是他匿名函數,所以還是需要賦值.形參少直接去除括號

function xM(){ ... }
const a = function(){ ... }
()=> { ... }

var a = ()=> console.log(...)
var a = val => console.log(...)

默認值
如果其中第三個沒有添加實參,所以把默認的55給你了

var a = (a = 0,b =12,c=55)=>{
     console.log(a+b+c)
}
a(12,11)

箭頭函數

重點説一個,如果直接返回{name:"xx"}一定會報錯
因為他把你的{name:xx}當成了function(){name:xx}
所以需要加一個括號:({name:xx})

var a = function(){  ...  }

var a = ()=>{ ... }
var a = ()=> console.log("123)
var a = (one, two) => one+two
var a = ()=> ({name:"我愛祖國"})

全新的變量

{ var a = 250 }
console.log(a)
//返回250

{ let a = 250 }
console.log(a)
//報錯!,沒有定義!不能跨越層級

{const a=250 }
console.log(a)
//報錯!,沒有定義!不能跨越層級

作用域

作用域其實就是指變量的可見區域

  • 全局作用域:全局作用域其實就是script裏面所有位置,在裏面最外層變量就是全局變量
  • 局部作用域:塊作用域就是局部作用域! 27行{號開始,29行}號結束!代碼塊銷燬
  • 局部 變量:毫無疑問,局部變量就是在塊裏面聲明變量的
  • 全局 變量:就是script的第一層的聲明變量

這裏我們再介紹一個:函數作用域
第一個不是作用域:因為他只定義了,沒有調用

function fn(){...}

而這個只要調用了,就是一個函數作用域

function fn(){...}
fn()

我們還是提到一點,如果發生層級關係,會就近原則
遠親不如近鄰,我選500000

let a = 123
{
    {
            let a = 500000
        {
            console.log(a)
        }
    }
}

Add a new 评论

Some HTML is okay.