首页 > 编程语言 >JavaScript核心语法(3)

JavaScript核心语法(3)

时间:2024-11-25 17:02:36浏览次数:9  
标签:const 函数 作用域 核心 JavaScript 语法 let console log

前两篇文章大概把JavaScript的基础语法讲了一下,这篇文章主要讲讲ES6的核心语法。ES6的核心语法说实话其实有点多,我重点挑一些经常在项目中用到的来讲,其他一些我没怎么见过的就不讲了。

目录

1.变量和常量

变量(let 和 var)

var

let

常量(const)

总结

2.箭头函数

语法

示例

特性和行为

使用场景


1.变量和常量

变量(let 和 var

var

  • 作用域var 声明的变量是函数作用域或全局作用域的。如果在函数内声明,则在整个函数内都可以访问;如果在函数外声明,则在全局范围内都可以访问。
  • 提升var 声明的变量会被提升到函数或全局作用域的顶部,但不会初始化。这意味着你可以在声明之前访问它们,但值是 undefined
function example() {
  console.log(x); // undefined
  var x = 10;
  console.log(x); // 10
}
example();

let

  • 作用域let 声明的变量是块级作用域的。这意味着它们只在声明它们的块(如 {} 包围的代码块)内有效。
  • 提升let 声明的变量不会被提升到块的顶部,因此在声明之前访问它们会导致 ReferenceError
function example() {
  console.log(x); // ReferenceError: x is not defined
  let x = 10;
  console.log(x); // 10
}
example();

常量(const

  • 作用域const 声明的变量是块级作用域的,这与 let 类似。
  • 不可变const 声明的变量必须在声明时初始化,并且不能重新赋值。注意,const 只保证变量名指向的内存地址不变,对于复杂类型(如对象和数组),其内容仍然可以修改。
function example() {
  const x = 10;
  console.log(x); // 10
  x = 20; // TypeError: Assignment to constant variable.
}
example();

// 对于对象或数组
const obj = { a: 1 };
obj.a = 2; // 合法,修改对象属性
console.log(obj.a); // 2

总结

  • var:函数作用域或全局作用域,变量提升,允许重复声明。
  • let:块级作用域,不提升,不能在同一作用域内重复声明。
  • const:块级作用域,不提升,必须初始化,不能重新赋值,适用于常量。

2.箭头函数

箭头函数是 ES6 中引入的一种更简洁的函数表达方式。它们具有一些独特的特性,使得它们在某些情况下比传统函数更方便使用。以下是箭头函数的详细介绍。

语法

箭头函数的基本语法如下:

(param1, param2, ..., paramN) => { statements }

如果只有一个参数,可以省略圆括号:

param => { statements }

如果函数体只有一条语句,并且需要返回值,可以省略大括号和 return 关键字:

(param1, param2, ..., paramN) => expression

示例

  1. 无参数的箭头函数
const sayHello = () => {
  console.log("Hello!");
};
sayHello(); // 输出 "Hello!"
  1. 一个参数的箭头函数
const square = x => x * 2;
console.log(square(4)); // 输出 8
  1. 多个参数的箭头函数
const add = (a, b) => a + b;
console.log(add(3, 5)); // 输出 8

特性和行为

  1. 没有自己的 this 绑定

    箭头函数不会创建自己的 this,它会捕获其所在上下文的 this 值,作为自己的 this 值。这使得它们非常适合用于回调函数,特别是在需要访问类实例的成员时。

    function Person() {
      this.age = 0;
    
      setInterval(() => {
        this.age++;
        console.log(this.age);
      }, 1000);
    }
    
    const p = new Person();
    

    在上面的示例中,箭头函数中的 this 绑定到 Person 实例,因此可以正确访问 this.age

使用场景

  1. 简化回调函数

    const numbers = [1, 2, 3, 4];
    const doubled = numbers.map(n => n * 2);
    console.log(doubled); // 输出 [2, 4, 6, 8]
    
  2. 保持 this 上下文

    class Timer {
      constructor() {
        this.seconds = 0;
        setInterval(() => {
          this.seconds++;
          console.log(this.seconds);
        }, 1000);
      }
    }
    
    const timer = new Timer();
    

标签:const,函数,作用域,核心,JavaScript,语法,let,console,log
From: https://blog.csdn.net/qq_54432917/article/details/144026981

相关文章

  • GaussDB SQL基本语法示例-CASE表达式
    一、前言SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。二、CASEExpression(CASE表达式)介绍在GaussDBSQL中,CASE表达式(CASEExpression)是一个非常强大......
  • GaussDB SQL基础语法-变量&常量
    一、前言SQL是用于访问和处理数据库的标准计算机语言。GaussDB支持SQL标准(默认支持SQL2、SQL3和SQL4的主要特性)。本系列将以《云数据库GaussDB—SQL参考》在线文档为主线进行介绍。二、GaussDB数据库中的常量和变量的基本概述及语法定义数据库中的变量和常量是两种重要的数据......
  • [Javascript] Import the Same JavaScript Module Multiple Times with Cache Busting
    WhenattemptingtoloadthesamemoduletwiceinJavaScriptyou'llhitacacheandcodewon'tre-run.Inscenarioswhereyouactuallydowanttohavestateinyourmodules,you'llhavetouseacache-bustingtechniquebypassingaquerypar......
  • javascript-语句
    1.对象时不可迭代访问的。尝试使用for/of循环会throwTypeErrorleto={x:1,y:2,z:3};for(letelementofo){console.log(element);}//throwtypeError2.可以使用Object.keys()方法实现对象迭代leto={x:1,y:2,z:3};letkeys="";for(letkofObject.keys(o)){keys+=k;}......
  • 某保险理赔核心OB SQL优化案例
    某保险理赔核心系统oracle平迁ob国产化项目,目前已经投产完成,稳定运行。其中遇到条执行3600s慢sql,这条sql是hibernate拼接出来的语句,如果页面不同选项的话,表顺序,谓词过滤条件内容都会不一样。目前只针对这条拼接的慢sql进行优化,并无实际多大用处,记录个改法案例,实际优化方案还......
  • 探索计算机核心知识:程序、进程、线程与网络体系
     在计算机的世界里,程序、进程与线程是几个极为关键的概念。程序就像是一份详尽的建筑蓝图,它是一系列指令的集合,存储在计算机的硬盘等存储介质中,本身是静态的,例如我们日常使用的各种软件安装包所包含的代码就是程序。而进程则是程序的一次动态执行过程,当我们双击打开一个程序......
  • JavaScript有几种类型值?能否画出它们的内存图?
    JavaScript有七种原始数据类型和一种引用类型:原始数据类型(PrimitiveDataTypes):存储在栈(Stack)内存中,值直接存储在变量访问的位置。Boolean:true或falseNull:只有一个值null,表示空或不存在的值。Undefined:变量声明了但未赋值时的默认值undefined。Number:所......
  • 【分享】这篇教程助力你成为 JavaScript 糕手!(十一)
    第十一章:异步编程11.1异步编程的概念在JavaScript中,异步编程是一种非常重要的编程模式,它用于处理那些不会立即完成的操作,而是在一段时间后才会返回结果的任务。传统的同步编程模式下,代码是按照从上到下的顺序依次执行的,每一行代码都必须等待前一行代码执行完毕后才会......
  • 【C++语法】构造函数初始化列表
    初始化列表相较于在构造函数体中赋值,有以下几个优势:1.避免多次构造对于某些类型的成员变量(如const或引用类型),它们必须在初始化列表中进行初始化,不能在构造函数体中赋值。例如:classExample{  private:    constinta;//常量成员    int&ref;......
  • 前端必知必会-JavaScript 按位运算
    文章目录JavaScript按位运算JavaScript使用32位按位操作数JavaScript按位与JavaScript按位或JavaScript按位异或JavaScript按位与(&)JavaScript按位或(|)JavaScript按位异或(^)JavaScript按位非(~)JavaScript(零填充)按位左移(<<)JavaScript(零填充)右移......