【JavaScript】详解JavaScript语法

news2024/9/9 6:20:59

文章目录

    • 一、变量和数据类型
    • 二、运算符
    • 三、条件语句
    • 四、循环语句
    • 五、函数
    • 六、对象和数组
    • 七、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 = {            // object
  name: '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]); // Apple

fruits.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; // 块级作用域内的x
  console.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 2

let {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.coloradmin.cn/o/1962347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“Assistants“ has no attribute “files“ in openAI assistants

题意&#xff1a;在 OpenAI 的助手&#xff08;assistants&#xff09;中&#xff0c;“Assistants” 没有 “files” 这个属性。 问题背景&#xff1a; assistant_file client.beta.assistants.files.create(assistant_id st.session_state.assistant_id,file_id st.sessi…

2024年最佳骨传导耳机推荐:五款不容错过的选择!

作为音乐爱好者的我&#xff0c;也一直在寻找一款好的骨传导耳机&#xff0c;听音乐对我来说不仅仅是一种消遣方式&#xff0c;更多是一种对生活、工作上压力和困难的舒缓&#xff0c;所以今天给大家推荐几款骨传导耳机。今天推荐这几款骨传导耳机都是比较有性价比&#xff0c;…

Oracle VM VirtualBox 异常退出,如何解决??

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

向量数据库性能测试工具(VectorDBBench.com)性价比排名

排名 向量数据库(不同硬件配置) 价格/性能比 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 无标量过滤 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 低标量过滤 QP$(每百万次查询所花费的价格)中型数据集, OpenAI 高标量过滤 QP$(每百万次查询所花费的价…

Linux系统之ftp服务配置

&#xff08;1&#xff09;查看vsftpd服务软件是否安装。 若缺少相关软件请使用yum方式安装相关软件。 &#xff08;2&#xff09;关闭防火墙和selinux保护。 &#xff08;3&#xff09;设置匿名访问。 vim /etc/vsftpd/vsftpd.conf 并通过ftp的方式在共享文件夹中创建名为“…

生成式 AI 时代的数据库:Databend 与大模型的融合探索

生成式人工智能&#xff08;Generative AI&#xff09;近年来快速崛起&#xff0c;从图像生成、自然语言处理到个性化推荐系统&#xff0c;生成式 AI 的应用范围越来越广泛。在这其中&#xff0c;数据可以说是企业在生成式 AI 时代取得成功的关键&#xff0c;每个公司都能访问相…

python100day(31-35) 玩转Linux操作系统

目录 玩转Linux操作系统操作系统发展史没有操作系统&#xff08;手工操作&#xff09;批处理系统分时系统和实时系统通用操作系统 Linux概述Linux系统优点Linux系统发行版本基础命令实用程序文件和文件夹操作管道和重定向别名文本处理 用户管理文件系统文件和路径目录结构访问权…

MVC三层框架

什么是MVC &#xff1a; Model模型 view视图 Controller控制器 早先架构&#xff1a; 用户直接访问控制层&#xff0c;控制层就可以直接操作数据库 弊端&#xff1a;程序十分臃肿&#xff0c;不利于维护 servlet的代码中&#xff1a;处理请求、响应、视图跳转、处理JDBC、处理…

鄂维南院士:人工智能的零数据、小数据、大数据和全数据方法

源自&#xff1a; 中国计算机学会 注&#xff1a;若出现无法显示完全的情况&#xff0c;可 V 搜索“人工智能技术与咨询”查看完整文章 人工智能、大数据、多模态大模型、计算机视觉、自然语言处理、数字孪生、深度强化学习 课程也可加V“人工智能技术与咨询”报名参加学习 致…

【漏洞复现】泛微E-Cology9 WorkPlanService 前台SQL注入漏洞(XVE-2024-18112)

0x01 产品简介 泛微e-cology是一款由泛微网络科技开发的协同管理平台&#xff0c;支持人力资源、财务、行政等多功能管理和移动办公。 0x02 漏洞概述 该漏洞是由于泛微e-cology未对用户的输入进行有效的过滤&#xff0c;直接将其拼接进了SQL查询语句中&#xff0c;导致系统出…

【RT-Thread】串口接收数据并找出一帧完整的报文

本文主要记录基于 RT-Thread的串口接收数据,并找出完成的一帧报文 实现: 完整的一帧数据发送出去,提示【找到一帧数据】不完整的一帧数据发出去,不做解析,2s后未收到数据,清空缓冲区单个字节接收的时间间隔定义为2s,间隔 2s 未收到数据,默认清空缓冲区【测试结果】 目…

【漏洞复现】Bazaar CVE-2024-40348 任意文件读取漏洞

声明&#xff1a;本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动&#xff0c;将与本文档的作者或发布者无关。 一、漏洞描述 Bazaar是一个功能强大的版本控制系统&#xff0c;它能够帮助用户详细记录项目的历史变化&#xff0c;并简…

基于SpringBoot+Vue的原创歌曲分享平台(带1w+文档)

基于SpringBootVue的原创歌曲分享平台(带1w文档) 基于SpringBootVue的原创歌曲分享平台(带1w文档) 平台为了数据库结构的灵活性选择MySQL来设计&#xff0c;而java技术&#xff0c;B/S架构则保证了较高的平台适应性。本文主要介绍了平台开发背景&#xff0c;需要完成的功能与开…

Sentinel 入门与实战

一、Sentinel概念 1.1 什么是Sentinel Spring Cloud Alibaba Sentinel 是一个开源的流量控制和熔断框架&#xff0c;它是 Alibaba 开源的微服务框架 Spring Cloud Alibaba 中的一个组件。Sentinel 旨在解决分布式系统中的流量控制和熔断问题&#xff0c;帮助开发人员保护微服…

U盘格式化后数据能恢复吗?恢复方法盘点!

在数字化时代&#xff0c;U盘已成为我们日常生活和工作中不可或缺的数据存储设备。然而&#xff0c;在使用过程中&#xff0c;我们有时可能会因为各种原因对U盘进行格式化&#xff0c;从而不慎删除了重要数据。那么&#xff0c;U盘格式化后数据能恢复吗&#xff1f; 首先&…

CANoe在使用时碰到的一些很少见的Bug

CANoe作为一款成熟且稳定的总线仿真与测试工具&#xff0c;深受汽车工程师们的喜爱。CANoe虽然稳定&#xff0c;但作为一个软件来说&#xff0c;在使用中总会出现一些或大或小的Bug。最近全球范围内的大规模蓝屏事件&#xff0c;是由某个安全软件引起的。而很多CANoe使用者最近…

vue3+fetch请求+接收到流式的markdown数据+一边gpt打字机式输出内容,一边解析markdown语法+highlight.js实现代码高亮

这个问题终于解决了&#xff01;好开心。 先看最终效果&#xff1a; video_20240724_141543_edit 项目背景&#xff1a;vue3 场景&#xff1a;像gpt一样可以对话&#xff0c;当用户发送问题之后&#xff0c;ai回复&#xff0c;ai是一部分一部分回复&#xff0c;像打印机式输出…

如何将本地代码上传到github

将本地文件上传到GitHub仓库的过程通常包括以下几个步骤&#xff1a; 一 创建GitHub仓库&#xff1a; 如果你还没有一个GitHub仓库&#xff0c;首先需要在GitHub上创建一个新的仓库。登录到你的GitHub账户&#xff0c;然后点击“New repository”按钮&#xff0c;填写仓库的相关…

在linux运维中为什么第一道防线是云防火墙,而不是waf

在Linux运维和云计算环境中&#xff0c;第一道防线通常是云防火墙&#xff08;Cloud Firewall&#xff09;&#xff0c;而不是Web应用防火墙&#xff08;WAF&#xff09;&#xff0c;主要是因为云防火墙提供了更基础和广泛的网络层安全控制。以下是一些关键原因&#xff1a; 1…

AGI思考探究过程中的意义、价值与乐趣 Ⅱ

鉴于LLM与RL两者间在整体学习范式、学习目标、模型结构的差异化与统一的考量&#xff0c;业内不少的思路尝试将两种思想融合在一起以期待AGI的突破&#xff0c;但结合后要么看着不是很巧妙&#xff0c;要不就是看起来很僵硬&#xff0c;总感觉像是一个过渡性的方法&#xff0c;…