美文网首页
块级作用域

块级作用域

作者: iceoreocheese | 来源:发表于2019-03-28 15:47 被阅读0次

块级作用域

作用域

含义

a. 作用域被用来描述在某个代码块可见的所有实体(或有效的所有标识符),更精准一点,叫做上下文。是你的代码在运行时,各个变量、函数和对象的可访问性。换句话说,作用域决定了你的代码里的变量和其他资源在各个区域中的可见性。(上下文和作用域也有区别

b. 任何一对花括号中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的

c. 当变量定义在一个函数中时,变量就在局部作用域中,而定义在函数之外的变量则从属于全局作用域。每个函数在调用的时候会创建一个新的作用域。

作用

a. 最小访问原则

b. 为你的代码提供了一个安全层级。计算机安全中,有个常规的原则是:用户只能访问他们当前需要的东西。

c. 函数体内部,局部变量的优先级比同名的全局变量高

块语句

  • 它们不会创建新的作用域。在块级声明中定义的变量从属于该块所在的作用域。包括但不限于以下(if,switch,for,while等。

1. var

  • 通过var声明的变量没有块级作用域
var x = 1;
{
var x = 2;
}
console.log(x); // 输出 2

2. let

  • 其声明的变量是有块级作用域的
let x = 1;
{
let x = 2;
}
console.log(x); // 输出 1
  • x = 2被限制在块级作用域中, 也就是它被声明时所在的块级作用域。
  • let声明的变量在块级作用域内能强制执行更新变量
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {console.log(i);};
}
a[0]();                // 10
a[1]();                // 10
a[6]();                // 10
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {console.log(i);};
}
a[0]();                // 0
a[1]();                // 1
a[6]();                // 6

3.const

  • 其声明的变量是有块级作用域的
const c = 1;
{
const c = 2;
}
console.log(c); // 输出1, 而且不会报错
  • note:注意块级作用域里的常量声明const c = 2 并不会抛出SyntaxError: Identifier 'c' has already been declared这样的语法错误,因为这是一个新的作用域。

4.function

foo('outside');  // TypeError: foo is not a function
{
function foo(location) {
console.log('foo is called ' + location);
}
foo('inside'); // 正常工作并且打印 'foo is called inside' 
}

相关文章

  • js 作用域

    js 作用域主要有:全局作用域和局部作用域,es5之前没有块级作用域,es6有了块级作用域 何为块级作用域,块级作...

  • let、const和var的区别(个人笔记)

    1. 区别 (1)块级作用域块作用域由{ }包括,let和const具有块级作用域,var不存在块级作用域。块级作...

  • let,var和const

    var没有块级作用域,只有方法作用域常见的块级作用域,if(){}。for(){}。

  • 第七章 块级作用域、私有变量

    模仿块级作用域 私有变量  js没有块级作用域,只有全局作用域和局部作用域(函数作用域),块级作用域是指某一部分代...

  • 你真的懂let和const吗?

    块级作用域 在ES6之前我们脑海里应该只存在全局作用域和函数级作用域,没有块级作用域。那么为什么要引入块级作用域呢...

  • js高级知识点(第五天)

    所用域 什么是作用域 变量起作用的范围 什么是块级作用域,使用代码块限定的作用域是块级作用域(let声明的变量是块...

  • ES6->块级作用域

    块级作用域 为什么需要块级作用域? ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。第...

  • es6新增特性

    一、变量的改变 let 用来声明变量(块级作用域) const 用来表示常量(块级作用域) 块级作用域 就是在{}...

  • vue.js let与for的用法

    (一)块级作用域1.let声明的变量拥有块级作用域,块级作用域是一对大括号2.块级作用域可以直接写一对大括号,以后...

  • js声明提升

    块级作用域块级作用域是指花括号内的每一段代码都具有各自的作用域,而javascript没有块级作用域。javasc...

网友评论

      本文标题:块级作用域

      本文链接:https://www.haomeiwen.com/subject/vegqbqtx.html