ES6学习——块级绑定

2024-04-11 17:38

本文主要是介绍ES6学习——块级绑定,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ES6 第一章 块级绑定

  1. 引言

      目前接触到的c、c++、java、c#等类c语言基本都提供了俩种声明,一种是变量声明,一种是常量声明,且都是固定的模式,作用域分为全局和局部变量,任何变量都需要声明,js也不例外,但是不同的是,类c语言是在变量被声明的地方才进行创建且先声明再使用,但是js因为存在变量提升,也就是说,上一行访问下一行才会定义的变量是可行的,只不过访问到的值是undefined(js中的undefined和报错是俩种概念)

     2. var声明

  • 使用实例
//example1
var a = 2 //全局变量
function f1() {console.log(a) //可以访问
}
f1() //输出2//example2
function f2() {var b = 3 //局部变量console.log(b)
}
f2() //输出3//example3
function f2() {var b = 3 //局部变量console.log(b)
}
function f3() {console.log(b)
}
f3() //会报错,报错指向f3中的b//example4
function f4() {console.log(c)var c = 4
}
f4() //会输出undefined,这个例子就是为了解释js的变量提升 
  • 再用一个例子来理解变量提升
function getValue(condition) {if (condition) {console.log(value) //undefinedvar value = "b"console.log(value) //b//other optionsreturn value } else {console.log(value) //undefinedreturn null}console.log(value) //undefined
}

到这里,你可能还是有点不太明白,这里再加上书上的解释

如果你不熟悉js,或许会认为仅当condition的值为true时,变量value才会被创建,但实际上,value无论如何都会被建立,js引擎在后台对getValue函数进行了调整,结果会是这个样子

function getValue(condition) {var valueif (condition) {console.log(value) //undefinedvalue = "b"console.log(value) //b//other optionsreturn value } else {console.log(value) //undefinedreturn null}console.log(value) //undefined
}
//value 变量的声明被提升到了顶部,初始化工作保留在了原处,这意味着else分支内也可以访问value                                                                                             
  • 写到这里会为let做一个铺垫,js的初学者会因为变量提升的这种机制弄的头皮发麻,所以es6引入了块级作用域,让变量的生命周期更好被控制,从另一个角度说,也就是为了和其他语言保持一致性,变量在声明之前不能被使用访问,访问的结果不在是undefined而是会报错

  2. let声明

  • 使用实例
function getValue(condition) {if (condition) {//console.log(value) 一旦此行代码取消注释就会报错let value = "b"console.log(value) //b//other optionsreturn value } else {// console.log(value) 一旦此行代码取消注释就会报错return null}//console.log(value) 一旦此行代码取消注释就会报错
}
  • 使用方式(禁止重复声明)
//example1 全局作用域内已经使用var定义了一个value,不允许使用let再定义一个一样的
var value = "a"
let value = "b"//example2 与上同理,这也是同类c语言不同的一点
let value = "a"
let value = "b"//example3 注意这个例子
var value = "a"
if (condition) {let value = "b" //不会报错,因为并不在同一个级别的作用域
}

 3. 常量声明(常量值)

  • 使用实例
const maxItems = 30;
  • 使用方式

   1.禁止在声明时不初始化

//example1
//有效的常量
const maxItems = 30
//语法发生错误:未进行初始化
const name 

   2. 同let一样为块级声明,不存在变量提升

//example2
if (condition) {const max = 5;console.log(max) //5
}
// console.log(max) 取消注释就会报错

   3. 禁止重复声明(这个上面有,不做解释)

   4. 与类c语言一样,不允许对常量进行再赋值,但是常量对象是可以修改对象的变量成员  

//example1
const max = 5
//max = 6 取消注释就会报错-不允许重复赋值//example2
const person = {name: "meimei"
}
console.log(person.name) //meimei
person.name = "dongdong"
console.log(person.name) //dongdong
// person = {
//     name: "madongmei"
// } 取消注释就会报错-不允许重复赋值

   

这篇关于ES6学习——块级绑定的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894747

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于