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)
        }
    }
}

赵不悔
96 声望4 粉丝

我以为租来的人生也能幸福…要不是幸福终究有个期限,我也就信了。


引用和评论

0 条评论