【JavaScript】入门详解

news2024/10/30 5:23:04

JavaScript 作为 Web 开发的基石,赋予了网页动态交互的能力。本文将深入浅出地讲解 JavaScript 的核心概念,并结合最新用法进行详细解释和示例。

1. JavaScript 简介

JavaScript 是一种解释型脚本语言,也称弱类型语言,最初设计用于在网页上添加交互性。如今,它已成为一门功能强大的多用途语言,可用于前端开发(例如使用 React、Angular 和 Vue 等框架)、后端开发(Node.js)、移动应用开发(React Native)、桌面应用开发(Electron)甚至游戏开发。

2. 引入 JavaScript

在 HTML 中引入 JavaScript 代码主要有两种方式:

  • 内部脚本: 将 JavaScript 代码嵌入 HTML 文档内部的 <script> 标签中。

<!DOCTYPE html>
<html>
<head>
  <title>JavaScript example</title>
  <script>
    console.log("Hello from inline JavaScript!"); // 直接在 HTML 中编写 JavaScript
  </script>
</head>
<body>

</body>
</html>

  • 外部脚本: 将 JavaScript 代码保存在独立的 .js 文件中,然后在 HTML 中使用 <script> 标签的 src 属性引入。推荐这种方式,因为它可以提高代码的可维护性和复用性。

<!DOCTYPE html>
<html>
<head>
  <title>JavaScript example</title>
  <script src="script.js" defer></script> </head> <body>

</body>
</html>

script.js 文件内容:

console.log("Hello JavaScript");

注意: 使用 defer 属性可以确保脚本在 HTML 解析完成后再执行,避免阻塞页面渲染。

3. 基本语法

掌握了js的引入方式,那么接下来我们需要学习js的书写了,首先需要掌握的是js的书写语法,语法规则如下:

  • 区分大小写:与 Java 一样,变量名、函数名以及其他一切东西都是区分大小写的

  • 每行结尾的分号可有可无

  • 大括号表示代码块

  • 注释:

    • 单行注释:// 注释内容

    • 多行注释:/* 注释内容 */

我们需要借助js中3种输出语句,来演示书写语法

api描述
window.alert()警告框
document.write()在HTML 输出内容
console.log()写入浏览器控制台

编写3种输出语句的代码,并且添加注释,具体代码如下;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-基本语法</title>
</head>
<body>
    
</body>
<script>
    /* alert("JS"); */
    //方式一: 弹出警告框
    window.alert("hello js");
</script>
</html>

浏览器打开如图所示效果:


 

  • 语句: JavaScript 代码由一系列语句组成,通常以分号 ; 结尾(尽管不是强制性的,但强烈建议使用以提高代码可读性和避免潜在错误)。

  • 变量: 使用 let 或 const 声明变量。let 用于声明可以重新赋值的变量,const 用于声明常量,其值一旦赋值就不能更改。避免使用 var,因为它具有函数作用域,容易造成混淆。

关键字解释
var早期ECMAScript5中用于变量声明的关键字
letECMAScript6中新增的用于变量声明的关键字,相比较var,let只在代码块内生效
const声明常量的,常量一旦声明,不能修改
let age = 30; // 使用 let 声明变量
age = 31; // 可以重新赋值

const PI = 3.14159; // 使用 const 声明常量
// PI = 3.14; //  这会报错,因为不能重新赋值给 const

  • 数据类型: JavaScript 拥有多种数据类型:

数据类型描述
number数字(整数、小数、NaN(Not a Number))
string字符串,单双引皆可
boolean布尔。true,false
null对象为空
undefined当声明的变量未初始化时,该变量的默认值是 undefined
  • 原始数据类型:

  • bigint: 任意精度的整数 (ES2020 新增)

  • symbol: 唯一的,不可变的值 (ES6 新增)

  • undefined: 表示未定义的值

  • null: 表示空值

  • boolean: 布尔值 (true 或 false)

  • string: 字符串 (例如 "Hello")

  • number: 数字 (例如 10, 3.14, Infinity, NaN)

  • 对象类型:

    • object: 对象,包含键值对

    • array: 数组,一种特殊的对象,用于存储有序的数据集合

    • function: 函数,一种可调用的对象

let name = "Alice"; // string
let count = 10;    // number
let isActive = true; // boolean
let user = null;    // null
let city;          // undefined (默认值)

  • 运算符: JavaScript 支持常见的算术、比较、逻辑、赋值、位运算符等。

let x = 10;
let y = 5;

let sum = x + y; // 加法
let isEqual = x === y; // 严格相等比较 (值和类型都相等)
let isNotEqual = x !== y; // 严格不相等比较
let logicalAnd = x > 5 && y < 10; // 逻辑与

4. 函数

函数是可重复使用的代码块。可以使用函数声明或函数表达式定义函数。箭头函数是 ES6 引入的更简洁的函数定义方式。

  • 函数声明:

function greet(name) {
  console.log(`Hello, ${name}!`); // 使用模板字面量
}

greet("Bob");

  • 函数表达式:

const greet = function(name) {
  console.log(`Hello, ${name}!`);
};

greet("Alice");

  • 箭头函数:

const greet = (name) => console.log(`Hello, ${name}!`);

greet("Charlie");


const add = (x, y) => x + y;

console.log(add(2, 3)); // 输出 5

5. JavaScript 对象详解

  • 数组 (Array):

const fruits = ["apple", "banana", "orange"];
console.log(fruits[0]); // 访问数组元素,输出 "apple"
fruits.push("grape"); // 添加元素到数组末尾
fruits.unshift("mango"); // 添加元素到数组开头
fruits.pop(); // 删除最后一个元素
fruits.shift();// 删除第一个元素
console.log(fruits.length); // 获取数组长度

// 迭代数组
fruits.forEach((fruit) => console.log(fruit)); 

// 数组映射
const fruitLengths = fruits.map((fruit) => fruit.length);
console.log(fruitLengths);

// 数组过滤
const shortFruits = fruits.filter((fruit) => fruit.length < 6);
console.log(shortFruits);

  • 字符串 (String):

let str = "Hello World";
console.log(str.length); // 获取字符串长度
console.log(str.toUpperCase()); // 转换为大写
console.log(str.toLowerCase()); // 转换为小写
console.log(str.indexOf("World")); // 查找子字符串的位置
console.log(str.slice(0, 5)); //  提取子字符串 "Hello"
console.log(str.includes("World")); // 检查是否包含子字符串,返回 true


// 模板字面量 (ES6)
let name = "John";
let message = `Hello, ${name}!`; // 使用反引号 `` 和 ${}
console.log(message); // 输出 "Hello, John!"

  • JSON (JavaScript Object Notation): 一种轻量级的数据交换格式。

let person = {
    name: "John",  // 属性名可以不用引号
    age: 30,
    city: "New York",
    greet: function() {  // 方法
      console.log(`Hello, my name is ${this.name}.`);
    }
  };


console.log(person.name); // 访问属性
person.greet(); // 调用方法

let jsonString = '{"name": "Alice", "age": 25}'; //  JSON 字符串需要用双引号
let parsedJson = JSON.parse(jsonString); // 将 JSON 字符串解析为 JavaScript 对象
console.log(parsedJson.name); // 输出 "Alice"

console.log(JSON.stringify(person));  // 将 JavaScript 对象转换为 JSON 字符串

希望这篇更详细的博客能帮助你更好地理解 JavaScript 的基础知识和用法!下期见~

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

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

相关文章

标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能...

登录后复制 import tensorflow as tfimport matplotlib.pyplot as plt# 设置随机种子以获得可重复的结果tf.random.set_seed(42)# 生成正态分布的数据# mean0 和 stddev1 表示生成标准正态分布的数据# shape(1000,) 表示生成1000个数据点data tf.random.normal(mean0, stddev1…

Web3 与人工智能的跨界合作:重塑数字经济的新引擎

在当今数字化浪潮汹涌澎湃的时代&#xff0c;Web3 和人工智能这两大前沿技术的跨界合作正逐渐成为重塑数字经济的强大新引擎。 Web3 代表着互联网的新一代发展方向&#xff0c;强调去中心化的理念、用户主权以及数据隐私保护。它致力于打破传统互联网由少数巨头掌控的格局&…

【问题记录】当机器人存在多个串口需要绑定时udevadm的作用

一、正常绑定 输入sudo udevadm info -a /dev/ttyUSBx | grep KERNELS 命令 会出现KERNELS的编号&#xff0c;记录编号。 修改规则文件/etc/udev/rules.d/99-usb.rules 添加以下命令 KERNEL"ttyUSB*", KERNELS"2-1.2:1.0", MODE:"0666", GROU…

江协科技STM32学习- P24 DMA数据转运DMA+AD多通道

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection

Pre-trained Online Contrastive Learning for Insurance Fraud Detection| Proceedings of the AAAI Conference on Artificial Intelligence 目录 摘要 Introduction Methodology Problem Formulation Pre-trained Model for Enhanced Robustness Detecting Network a…

pycharm与anaconda下的pyside6的安装记录

一、打开anaconda虚拟环境的命令行窗口&#xff0c;pip install&#xff0c;加入清华源&#xff1a; pip install PySide6 -i https://pypi.tuna.tsinghua.edu.cn/simple 二、打开pycharm&#xff0c;在文件--设置--工具--外部工具中配置一下三项&#xff1a; 1、 QtDesigner…

GitHub Star 数量前 5 的开源应用程序生成器

欢迎来的 GitHub Star 数量排名系列文章的第 7 篇——最受欢迎的应用程序生成器。 之前我们已经详细探讨过&#xff1a;在 GitHub 上最受欢迎的——无代码工具、低代码项目、内部工具、CRUD项目、自部署项目和 Airtable 开源替代品。累计超过 50 个优质项目&#xff01;&#…

【主机游戏】塔尼蚀:神之堕落 游戏介绍

《塔尼蚀&#xff1a;神之堕落》是一款2D横版动作游戏支持简体和繁体中文 https://pan.baidu.com/s/1UT5XSwUcxGQzPOoSuNt3vw?pwdfxbt 。 游戏的基本操作包括&#xff1a; 移动&#xff1a;使用键盘的WASD或方向键进行角色的移动。攻击&#xff1a;鼠标左键或键盘的攻击…

【优选算法篇】前缀之序,后缀之章:于数列深处邂逅算法的光与影

文章目录 C 前缀和详解&#xff1a;基础题解与思维分析前言第一章&#xff1a;前缀和基础应用1.1 一维前缀和模板题解法&#xff08;前缀和&#xff09;图解分析C代码实现易错点提示代码解读题目解析总结 1.2 二维前缀和模板题解法&#xff08;二维前缀和&#xff09;图解分析C…

【小白学机器学习26】 极大似然估计,K2检验,logit逻辑回归(对数回归)(未完成----)

目录 1 先从一个例题出来&#xff0c;预期值和现实值的差异怎么评价&#xff1f; 1.1 这样一个问题 1.2 我们的一般分析 1.3 用到的关键点1 1.4 但是差距多远&#xff0c;算是远呢&#xff1f; 2 极大似然估计 2.1 极大似然估计的目的 2.1.1 极大似然估计要解决什么问题…

Mount Image Pro,在取证安全的环境中挂载和访问镜像文件内容

天津鸿萌科贸发展有限公司从事数据安全服务二十余年&#xff0c;致力于为各领域客户提供专业的数据恢复、数据备份解决方案与服务&#xff0c;并针对企业面临的数据安全风险&#xff0c;提供专业的相关数据安全培训。 天津鸿萌科贸发展有限公司是 GetData 公司数据恢复与取证工…

什么是元件符号什么是封装

话不多说直接上图 左上角就可以理解为元件的符号&#xff0c;右上角可以理解为元件的封装&#xff0c;右下角是封装得3D图&#xff0c;左下角是真实的芯片。 同时注意我们元件符号的小孔&#xff0c;在封装和焊接时我们可以参照小孔的位置以及对应的引脚。如下图所示&#xff…

AUTOSAR 规范中的设计模式:传感器执行器模式

在 AUTOSAR Adaptive Platform (AP) 规范中&#xff0c;传感器执行器模式是一种典型的设计模式&#xff0c;主要用于实时控制系统中&#xff0c;用来实现传感器数据的获取和执行器指令的发送。该模式通过分离传感器和执行器的实现&#xff0c;使其独立运行并且能够通过某种通信…

【网页设计】学成在线案例

Demo 典型的企业级网站&#xff0c;目的是为了整体感知企业级网站的布局流程&#xff0c;复习以前知识。 集合代码见文章最后。 5.1 准备素材和工具 学成在线 PSD 源文件。开发工具 PS&#xff08;切图&#xff09; sublime&#xff08;代码&#xff09; chrome&#xff0…

第三十三篇:TCP协议如何避免/减少网络拥塞,TCP系列八

一、流量控制 一般来说&#xff0c;我们总是希望数据传输得更快一些&#xff0c;但是如果发送方把数据发送得太快&#xff0c;接收方可能来不及接收&#xff0c;造成数据的丢失&#xff0c;数据重发&#xff0c;造成网络资源的浪费甚至网络拥塞。所谓的流量控制&#xff08;fl…

基础知识-因果分析-daythree-独立性检验-贝叶斯公式及应用

根据概率乘法公式有P(AB)P(B|A)P(A)变形为除法形式&#xff0c;则有 更一般地&#xff0c;假设事件的集合B1&#xff0c;B2&#xff0c;…&#xff0c;Bn构成样本空间的一个划分&#xff0c;则根据全概率公式有 将式(2.14)中的B替换为Bi&#xff0c;则有 再代入P(A)的全概率计算…

QT界面开发--我的第一个windows窗体【菜单栏、工具栏、状态栏、铆接部件、文本编辑器、按钮、主界面】

经过前面的铺垫&#xff0c;今天我们就开始我们图形化界面之旅了&#xff0c;我们的第一个窗体主要包括&#xff1a;菜单栏、状态栏、工具栏、铆接部件、还有Qt提供的一些主窗体的API。 第一部分&#xff1a;主界面(QMainWindow) 当创建好项目后&#xff0c;我们直接运行&…

Docker镜像的创建、修改与导出

Docker镜像的创建、修改与导出 前言一、创建Docker镜像1. 基于已有镜像创建方法一:修改现有镜像方法二:使用Dockerfile通过源码编译安装nginx二、修改Docker镜像1. 基于已有镜像创建新镜像方法一:修改现有镜像2. 使用`docker commit`命令创建新镜像方法一:提交正在运行的容…

3GPP协议解读_NTN系列(一)_38.811_非地面网络(NTN)的背景、应用场景和信道建模

非地面网络 1. Scope4. 非地面网络背景介绍4.1 5G中的非地面网络4.2 非地面网络在5G中的用例4.3 卫星和空中接入网的架构4.4 卫星和空中接入网终端的特点4.5 空气/星载飞行器特性4.6 NTN的覆盖模式4.7 NTN网络架构选项4.8 频谱 5. 非地面网络应用场景5.1 应用场景概览5.2 属性介…

基于SSM+小程序的智慧旅游平台登录管理系统(旅游2)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 旅游平台开发微信小程序功能有管理员和用户。 1、管理员功能有个人中心&#xff0c;用户管理&#xff0c;景点分类管理&#xff0c;旅游景点管理&#xff0c;景点购票管理&#xff0c;景…