【JavaScript】详解JavaScript语法

文章目录

    • 一、变量和数据类型
    • 二、运算符
    • 三、条件语句
    • 四、循环语句
    • 五、函数
    • 六、对象和数组
    • 七、ES6+新特性
    • 八、实际应用案例

JavaScript是一门广泛应用于Web开发的编程语言。掌握JavaScript语法是成为前端开发者的第一步。本文将详细介绍JavaScript的基本语法,包括变量、数据类型、运算符、条件语句、循环、函数、对象、数组、ES6+新特性等内容。通过本文,你将全面了解JavaScript语法,并能在实际开发中灵活应用。

一、变量和数据类型

  1. 变量声明

在JavaScript中,可以使用varletconst来声明变量。

// 使用var声明变量
var name = 'Alice';// 使用let声明变量
let age = 25;// 使用const声明常量
const country = 'USA';
  1. 数据类型

JavaScript有六种基本数据类型:numberstringbooleannullundefinedsymbol,以及一种复杂数据类型:object

let num = 10;          // number
let str = 'Hello';     // string
let isTrue = true;     // boolean
let empty = null;      // null
let notDefined;        // undefined
let symbol = Symbol(); // symbol
let obj = {            // objectname: 'Alice',age: 25
};

二、运算符

  1. 算术运算符

JavaScript支持基本的算术运算:加(+)、减(-)、乘(*)、除(/)、取模(%)。

let sum = 10 + 5;     // 15
let difference = 10 - 5; // 5
let product = 10 * 5; // 50
let quotient = 10 / 5; // 2
let remainder = 10 % 3; // 1
  1. 比较运算符

比较运算符用于比较两个值:等于(==)、严格等于(===)、不等于(!=)、严格不等于(!==)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。

let isEqual = (10 == '10');    // true
let isStrictEqual = (10 === '10'); // false
let isNotEqual = (10 != '5');  // true
let isStrictNotEqual = (10 !== '10'); // true
let isGreater = (10 > 5);      // true
let isLess = (10 < 5);         // false
let isGreaterOrEqual = (10 >= 10); // true
let isLessOrEqual = (10 <= 5); // false
  1. 逻辑运算符

逻辑运算符用于逻辑判断:与(&&)、或(||)、非(!)。

let andResult = (true && false);  // false
let orResult = (true || false);   // true
let notResult = !true;            // false

三、条件语句

条件语句用于根据条件的真假执行不同的代码。

  1. if…else语句
let age = 18;
if (age >= 18) {console.log('You are an adult.');
} else {console.log('You are a minor.');
}
  1. switch语句
let color = 'red';
switch (color) {case 'red':console.log('Color is red.');break;case 'blue':console.log('Color is blue.');break;default:console.log('Color is not red or blue.');
}

四、循环语句

循环语句用于重复执行代码块。

  1. for循环
for (let i = 0; i < 5; i++) {console.log(i);
}
  1. while循环
let i = 0;
while (i < 5) {console.log(i);i++;
}
  1. do…while循环
let j = 0;
do {console.log(j);j++;
} while (j < 5);

五、函数

函数是可以重复使用的代码块。

  1. 函数声明
function greet(name) {return 'Hello, ' + name;
}
console.log(greet('Alice'));
  1. 函数表达式
const greet = function(name) {return 'Hello, ' + name;
};
console.log(greet('Bob'));

函数声明:使用function关键字直接定义一个有名字的函数,支持提升。

函数表达式:使用function关键字将函数赋值给一个变量,可以是匿名函数或具名函数,不支持提升。

  1. 箭头函数
const greet = (name) => 'Hello, ' + name;
console.log(greet('Charlie'));

六、对象和数组

  1. 对象

对象是键值对的集合。

let person = {name: 'Alice',age: 25,greet: function() {return 'Hello, ' + this.name;}
};
console.log(person.greet());
  1. 数组

数组是有序的元素集合。

let fruits = ['Apple', 'Banana', 'Cherry'];
console.log(fruits[0]); // Applefruits.push('Date');
console.log(fruits); // ['Apple', 'Banana', 'Cherry', 'Date']

七、ES6+新特性

  1. let和const

letconst是ES6引入的用于声明变量的关键字。与var不同,letconst具有块级作用域。

let x = 10;
const y = 20;if (true) {let x = 30; // 块级作用域内的xconsole.log(x); // 30
}console.log(x); // 10
  1. 模板字符串

模板字符串使用反引号(`` `)来定义,可以包含表达式。

let name = 'Alice';
let greeting = `Hello, ${name}!`;
console.log(greeting); // Hello, Alice!
  1. 解构赋值

解构赋值允许从数组或对象中提取值,赋值给变量。

let [a, b] = [1, 2];
console.log(a, b); // 1 2let {name, age} = {name: 'Alice', age: 25};
console.log(name, age); // Alice 25
  1. 默认参数

默认参数允许在函数参数中设置默认值。

function greet(name = 'Guest') {return `Hello, ${name}!`;
}
console.log(greet()); // Hello, Guest!
console.log(greet('Alice')); // Hello, Alice!
  1. 箭头函数

箭头函数语法更简洁,并且不会绑定this

const add = (a, b) => a + b;
console.log(add(1, 2)); // 3

八、实际应用案例

案例一:计算数组中所有元素的总和

const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum); // 15

案例二:使用对象和数组管理用户数据

let users = [{name: 'Alice', age: 25},{name: 'Bob', age: 30},{name: 'Charlie', age: 35}
];users.forEach(user => {console.log(`${user.name} is ${user.age} years old.`);
});

案例三:创建一个简单的计时器

function startTimer(duration) {let timer = duration, minutes, seconds;setInterval(() => {minutes = parseInt(timer / 60, 10);seconds = parseInt(timer % 60, 10);minutes = minutes < 10 ? "0" + minutes : minutes;seconds = seconds < 10 ? "0" + seconds : seconds;console.log(`${minutes}:${seconds}`);if (--timer < 0) {timer = duration;}}, 1000);
}startTimer(5 * 60); // 启动一个5分钟的计时器

推荐:

  • JavaScript
  • react
  • vue

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386504.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[ARC105E] Keep Graph Disconnected题解

题目 考虑加任意一条边时都会输的图的状态&#xff1a;图被分成两个强联通分量&#xff0c;每一个强联通分量都是一个完全图。 也就是说&#xff0c;假设一开始节点 1 1 1 和节点 n n n 不联通&#xff0c;那么还可以加 n ( n − 1 ) 2 − m − c n t 1 ( n − c n t 1 ) \…

Overlay网络

Overlay 介绍 Overlay网络是将已有的物理网络&#xff08;Underlay网络&#xff09;作为基础&#xff0c;在其上建立叠加的逻辑网络&#xff0c;实现网络资源的虚拟化。 传统网络带来了以下一些问题&#xff1a; ● 虚拟机规模受 网络规格限制在传统二层网络环境下&#xff0…

删除的视频怎样才能恢复?详尽指南

在日常生活中&#xff0c;我们有时会不小心删除一些重要的视频文件&#xff0c;或者在整理存储空间时不慎丢失了珍贵的记忆片段。这时候&#xff0c;我们可以通过一些数据恢复工具和技巧&#xff0c;找回这些被删除的视频。本文将详细介绍几种常见且有效的视频恢复方法&#xf…

如何用PostMan按照规律进行循环访问接口

①设置动态变量 步骤一: 设置环境变量 1. 创建环境变量集合 在 Postman 左上角选择 "环境"&#xff0c;然后点击 "添加" 来创建一个新的环境变量集合。给它起一个名称&#xff0c;比如 "uploadDemo". 2. 添加初始变量 在新创建的环境变量集…

C语言边界互通传送迷宫

目录 注意事项开头程序程序的流程图程序输入与输出的效果结尾 注意事项 程序里有关字符’\033’的输出都关于Sunshine-Linux的其中一篇博客——《printf函数高级用法设置打印字体颜色和背景色等》 开头 大家好&#xff0c;我叫这是我58。今天&#xff0c;我们来看一下我用C语…

微服务面试-分布式 注册中心 远程调用 保护

标红的原理还是不太熟悉 重新看 分布式事务 CAP理论 Consistency&#xff08;一致性&#xff09; Availability&#xff08;可用性&#xff09; Partition tolerance &#xff08;分区容错性&#xff09; BASE 理论 就是做取舍 cap三选二 AT模式脏写 TCC模式 注册中…

4nm点状激光模组的应用让未来科技走向潮流

在科技发展时代&#xff0c;激光技术以其高精度、高效率的特性&#xff0c;正逐步成为众多行业不可或缺的核心技术之一。其中&#xff0c;4nm点状激光模组作为激光技术领域的佼佼者&#xff0c;凭借其卓越的性能和广泛的应用前景&#xff0c;正引领着科技发展的新潮流。接下来我…

UnityShaderUI编辑器扩展

前言&#xff1a; 当我们在制作通用Shader的时候&#xff0c;避免不了许多参数混杂在一起&#xff0c;尽管在材质面板已经使用过Header标签来区分&#xff0c;但是较长的Shader参数就会导致冗余&#xff0c;功能块不够简约明了&#xff0c;如图&#xff1a; 对于Shader制作者来…

用spingboot+vue实现酒店管理系统的不同角色登录功能(附源码)

酒店管理系统 一、项目介绍 1、项目用到的技术栈 开发工具&#xff1a;idea 语言&#xff1a;java、js、htmlajax 数据库&#xff1a;MySQL 服务器&#xff1a;Tomcat 框架&#xff1a;mybatis、jQuery、springboot、vue 2、项目实现功能 管理员和用户登录和退出功能以及用…

WSL for Windows

1、安装 超详细Windows10/Windows11 子系统&#xff08;WSL2&#xff09;安装Ubuntu20.04&#xff08;带桌面环境&#xff09;_wsl安装ubuntu20.04-CSDN博客https://blog.csdn.net/weixin_44301630/article/details/122390018 注意&#xff0c;安装之后首次启动 Ubuntu 时&…

NC 删除有序链表中重复的元素-I

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 删除给出链表…

用依赖倒置和控制反转,突破Golang循环调用限制之后的思考

在软件开发中&#xff0c;随着项目规模的扩大和业务逻辑的复杂化&#xff0c;重构代码变得越来越重要。本文将介绍如何在既有代码基础上&#xff0c;通过依赖倒置&#xff08;DIP&#xff09;和控制反转&#xff08;IoC&#xff09;&#xff0c;实现新增加的代码可以循环引用到…

初学Mybatis之动态 SQL

动态 SQL 是指根据不同的条件生成不同的 SQL 语句 动态 SQL 详情请看链接 搭建环境&#xff1a; mysql 建立博客表 CREATE TABLE blog(id VARCHAR(50) NOT NULL COMMENT 博客id,title VARCHAR(100) NOT NULL COMMENT 博客标题,author VARCHAR(30) NOT NULL COMMENT 博客作者…

SolidWorks 2022安装包下载(图文详细安装教程)

SolidWorks 2022提供了强大的工具和功能&#xff0c;旨在帮助工程师和设计师进行产品设计和工程分析。它具有直观的用户界面和用户友好的操作&#xff0c;使得用户可以快速上手并进行复杂的设计任务。 主要特点和功能包括&#xff1a; 三维建模和装配&#xff1a;SolidWorks 20…

电脑没有摄像头怎么用手机当摄像头?虚拟摄像头使用的详细教程来了(全)

随着科技水平以及全球化经济的快速发展&#xff0c;视频会议、在线课程和直播已经成为日常办公或者生活中必不可少的一个环节。然而&#xff0c;在如今仍有许多台式电脑和一些老旧的笔记本电脑并没有内置摄像头&#xff0c;亦或者自带的摄像头质量不够理想&#xff0c;这使得视…

《python语言程序设计》2018版第6章第19题几何问题点的位置,利用4.31显示如何测试一个点是在一条有向线的左、右还是刚好在线上

# 这个是4.31的代码&#xff0c;一个函数里包含了。在线上&#xff0c;在线左&#xff0c;在线右 def judgePoint(x0, y0, x1, y1, x2, y2):juMethod ((x1 - x0) * (y2 - y0)) - ((x2 - x0) * (y1 - y0))if juMethod > 0:print("p2 is on the left side of the line f…

学习笔记:MySQL数据库操作5

1. 触发器&#xff08;Triggers&#xff09; 触发器是数据库的一种高级功能&#xff0c;它允许在执行特定数据库操作&#xff08;如INSERT、UPDATE、DELETE&#xff09;之前或之后自动执行一段代码。 1.1 创建商品和订单表 商品表&#xff08;goods&#xff09; gid: 商品编号…

Web3.js 4.x版本事件监听详解:从HTTP到WebSocket的迁移

项目场景 在一个使用以太坊区块链技术的项目中&#xff0c;需要监听智能合约的事件&#xff0c;以便在事件触发时能够及时响应。项目中使用了web3.js库的4.x版本&#xff0c;节点使用Geth启动&#xff0c;并通过HTTP与节点进行通信。 问题描述 合约DataStorage.sol文件已经定…

优雅单片机之STM32C8T6------蓝牙模块基本设置(2)

0&#xff0c;C8T6系列 1&#xff0c;入门之程序的下载 2&#xff0c;蓝牙模块基本设置&#xff08;本文&#xff09; 2&#xff0c;蓝牙模块基本应用 3&#xff0c;蓝牙小车&#xff08;待定&#xff09; 一&#xff0c;蓝牙模块基础设置 需要硬件&#xff1a;电脑&#x…

数据驱动未来:构建下一代湖仓一体电商数据分析平台,引领实时商业智能革命

1.1 项目背景 本项目是一个创新的湖仓一体实时电商数据分析平台&#xff0c;旨在为电商平台提供深度的数据洞察和业务分析。技术层面&#xff0c;项目涵盖了从基础架构搭建到大数据技术组件的集成&#xff0c;采用了湖仓一体的设计理念&#xff0c;实现了数据仓库与数据湖的有…