当前位置: 首页 > news >正文

[前端系列第3弹]JS入门教程:从零开始学习JavaScript

本文将带领大家,从零开始学习JavaScript,fighting~

目录

一、JavaScript简介

二、变量和数据类型

三、注释和分号

四、算术运算符

五、表达式和语句

六、代码块和作用域

七、函数(最重要) 


一、JavaScript简介

        JavaScript(简称JS)是一种运行在浏览器中的脚本语言,它可以让网页变得更加动态、交互和有趣。JS是网页开发的三大核心技术之一,与HTML和CSS相辅相成。HTML负责定义网页的内容,CSS负责指定网页的布局,而JS负责编写网页的行为。通过JS,可以实现以下功能:

  • 在网页上显示当前的日期和时间
  • 在用户点击按钮时弹出对话框
  • 在用户输入数据时进行验证和提示
  • 在用户滚动页面时改变网页的背景颜色
  • 在用户拖动元素时实现拖放效果
  • 在用户玩游戏时实现动画和音效
  • 等等

JS不仅仅可以用于网页开发,还可以用于其他领域,例如:

  • 服务器端开发:通过Node.js平台,可以使用JS来编写服务器端的应用程序,处理网络请求、数据库操作、文件操作等。
  • 移动端开发:通过React Native框架,可以使用JS来编写跨平台的移动应用程序,运行在Android和iOS设备上。
  • 桌面端开发:通过Electron框架,可以使用JS来编写桌面应用程序,运行在Windows、Mac和Linux系统上。
  • 机器学习:通过TensorFlow.js库,可以使用JS来编写机器学习的模型和算法,实现人脸识别、图像分类、自然语言处理等功能。

从上面的介绍可以看出,JS是一门非常有用和有趣的编程语言,它可以让我们创造出各种各样的项目和产品。在这篇文章中,我将带你从零开始学习JS的基础知识,并通过一些简单而有趣的例子来巩固学习效果。

二、变量和数据类型

变量是用来存储数据的容器,可以给变量赋予不同类型的值,例如数字、文本、布尔值等。在JS中,我们使用var、let或const关键字来声明变量,例如:

var x = 10; // 使用var声明一个名为x的变量,并赋值为10
let y = "Hello"; // 使用let声明一个名为y的变量,并赋值为"Hello"
const z = true; // 使用const声明一个名为z的常量,并赋值为true

注意,var和let声明的变量可以被重新赋值,而const声明的常量不能被重新赋值,否则会报错。例如:

x = 20; // 可以修改x的值为20
y = "World"; // 可以修改y的值为"World"
z = false; // 不能修改z的值为false,会报错

在JS中,有以下几种基本数据类型:

  • Number:表示数字,包括整数和小数,例如1, 3.14, -5等。
  • String:表示文本,用单引号或双引号括起来,例如"Hello", 'World’等。
  • Boolean:表示逻辑值,只有两个可能的值:true或false。
  • Undefined:表示未定义的值,当一个变量被声明但没有赋值时,它的默认值就是undefined。
  • Null:表示空值,当一个变量被赋值为null时,它表示没有任何有效的数据。

除了基本数据类型外,JS还有一种复杂数据类型:Object。对象是由多个属性和方法组成的集合,每个属性都有一个名字和一个值,每个方法都是一个函数。可以使用大括号{}来创建对象,并用冒号:分隔属性名和属性值,用逗号,分隔不同的属性或方法。例如:

var person = {name: "Alice", // 属性name的值是"Alice"age: 18, // 属性age的值是18sayHello: function() { // 方法sayHello是一个函数console.log("Hello, I am " + this.name); // 在控制台输出一句话}
};

可以使用点.或方括号[]来访问对象的属性或方法,例如:

console.log(person.name); // 输出"Alice"
console.log(person["age"]); // 输出18
person.sayHello(); // 调用sayHello方法,输出"Hello, I am Alice"

三、注释和分号

注释是用来说明代码的意义或功能的文字,它不会被执行,只是为了方便阅读和理解代码。在JS中,可以使用两种方式来写注释:

  • 单行注释:使用//开头,后面跟着想要写的注释内容,它只会影响当前行的代码。例如:
// 这是一个单行注释,它不会被执行
console.log("Hello"); // 这里也可以写注释,但是console.log("Hello")会被执行
  • 多行注释:使用/开头,/结尾,中间可以写多行的注释内容,它会影响//之间的所有代码。例如:
/*
这是一个多行注释,它不会被执行
它可以跨越多行
*/
console.log("World"); // 这一行会被执行,因为它不在多行注释里面

分号是用来结束一条语句的标志,它告诉JS解释器这里是一条语句的结束。在JS中,我们可以选择性地使用分号,因为JS解释器会自动在合适的地方添加分号。但是,为了避免一些潜在的错误和歧义,建议在每条语句的末尾都加上分号。例如:

var x = 10; // 这里加了分号,表示这是一条完整的语句
var y = 20 // 这里没有加分号,但是JS解释器会自动在这里加上分号
var z = x + y; // 这里也加了分号,表示这也是一条完整的语句

四、算术运算符

算术运算符是用来进行数学计算的符号,例如加、减、乘、除等。在JS中,可以使用以下的算术运算符:

  • +:加法,用来将两个数值相加,或者将两个字符串连接起来。例如:
var a = 10 + 20; // a的值是30
var b = "Hello" + "World"; // b的值是"HelloWorld"
  • ++:自增,用来将一个数值加1。它可以放在变量前面或后面,但是有不同的效果。如果放在变量前面,表示先加1再返回变量的值;如果放在变量后面,表示先返回变量的值再加1。例如:
var h = 10;
var i = ++h; // i的值是11,h的值也是11,因为先将h加1再赋给i
var j = h++; // j的值是11,h的值是12,因为先将h赋给j再加1
  •  算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符与Java运算符类似,不再一一列举

五、表达式和语句

  • 表达式:表示一个值,可以是一个字面量、一个变量、一个运算符或者一个函数调用。例如:
10 // 一个数字字面量,表示10这个值
"Hello" // 一个字符串字面量,表示"Hello"这个值
n // 一个变量,表示n所存储的值
n + 1 // 一个运算符,表示n和1相加的结果
Math.sqrt(n) // 一个函数调用,表示求n的平方根的结果
  • 语句:表示一个动作,可以是一个赋值、一个条件判断、一个循环、一个函数定义或者一个输出。例如:
var n = 10; // 一个赋值语句,将10赋给变量n
if (n > 0) { ... } // 一个条件语句,根据n是否大于0来执行不同的代码块
for (var i = 0; i < n; i++) { ... } // 一个循环语句,重复执行一段代码n次
function square(n) { ... } // 一个函数定义语句,定义了一个名为square的函数
console.log(n); // 一个输出语句,将n的值输出到控制台

在JS中,可以使用分号来分隔不同的语句,也可以使用换行来分隔不同的语句。但是,有些情况下,必须使用分号来结束一条语句,否则会导致错误或者意外的结果。例如:

var a = 10 // 这里没有加分号
var b = 20 // 这里也没有加分号
console.log(a + b) // 这里也没有加分号// 上面的代码等价于:var a = 10 var b = 20 console.log(a + b)// 这会导致语法错误,因为JS解释器无法识别这是三条语句还是一条语句// 正确的写法应该是:var a = 10; // 这里加了分号
var b = 20; // 这里也加了分号
console.log(a + b); // 这里也加了分号// 或者:var a = 10 // 这里没有加分号
var b = 20 // 这里也没有加分号console.log(a + b) // 这里没有加分号,但是换了一行// 上面的代码等价于:var a = 10;
var b = 20;console.log(a + b);// 这样就不会导致错误,因为JS解释器会自动在换行处添加分号

六、代码块和作用域

  • {}:代码块,用来将一组相关的语句组织在一起,形成一个逻辑单元。例如:
if (n > 0) {console.log("n是正数"); // 这是一个代码块,它属于if语句的条件分支
} else {console.log("n是负数或零"); // 这也是一个代码块,它属于else语句的条件分支
}
  • var:局部变量,用来声明在某个代码块内部有效的变量。例如:
function square(n) {var result = n * n; // 这是一个局部变量,它只在square函数内部有效return result; // 返回result的值
}
console.log(result); // 这里会报错,因为result在函数外部无效
  • let:块级变量,用来声明在某个代码块内部有效的变量,但是不会提升到代码块的顶部。例如:
if (n > 0) {let message = "n是正数"; // 这是一个块级变量,它只在if语句的代码块内部有效console.log(message); // 输出"n是正数"
}
console.log(message); // 这里会报错,因为message在if语句的代码块外部无效
  • const:常量,用来声明一个不可修改的变量,它也是一个块级变量。例如:
const PI = 3.14; // 这是一个常量,它的值不能被修改
PI = 3.15; // 这里会报错,因为不能修改常量的值
  • global:全局变量,用来声明在任何地方都有效的变量。例如:
name = "Alice"; // 这是一个全局变量,它没有使用var、let或const关键字声明
console.log(name); // 输出"Alice"
function sayHello() {console.log("Hello, " + name); // 在函数内部也可以访问name变量
}
sayHello(); // 输出"Hello, Alice"

七、函数(最重要) 

        函数是JS中非常重要的一个概念,它可以封装一段可重用的代码,然后在不同的地方调用它,从而简化代码和提高效率。在JS中,可以使用以下的方式来定义和调用函数:

  • 函数声明:使用function关键字来声明一个函数,给它一个名字和一组参数,然后在大括号里面写上函数的代码块。例如:
function square(n) { // 声明一个名为square的函数,它接受一个参数nreturn n * n; // 返回n的平方
}
  • 函数表达式:使用var、let或const关键字来声明一个变量,并将一个匿名函数赋给它,然后在小括号里面写上函数的参数,再在大括号里面写上函数的代码块。例如:
var cube = function(n) { // 声明一个名为cube的变量,并将一个匿名函数赋给它,它接受一个参数nreturn n * n * n; // 返回n的立方
}
  • 箭头函数:使用=>符号来定义一个简洁的函数表达式,如果只有一个参数,可以省略小括号;如果只有一条语句,可以省略大括号和return关键字。例如:
var double = n => n * 2; // 声明一个名为double的变量,并将一个箭头函数赋给它,它接受一个参数n,并返回n的两倍
  • 函数调用:使用函数名或者变量名加上小括号来调用一个函数,并在小括号里面传入实际的参数值。例如:
console.log(square(5)); // 调用square函数,并传入5作为参数,输出25
console.log(cube(3)); // 调用cube变量所指向的函数,并传入3作为参数,输出27
console.log(double(4)); // 调用double变量所指向的函数,并传入4作为参数,输出8

以上就是本文的全部内容啦,学习到这很棒喔,给你点赞~ 

相关文章:

[前端系列第3弹]JS入门教程:从零开始学习JavaScript

本文将带领大家&#xff0c;从零开始学习JavaScript&#xff0c;fighting~ 目录 一、JavaScript简介 二、变量和数据类型 三、注释和分号 四、算术运算符 五、表达式和语句 六、代码块和作用域 七、函数&#xff08;最重要&#xff09; 一、JavaScript简介 JavaScript&…...

html 计算器界面

其他链接&#xff1a; https://www.freecodecamp.org/news/how-to-build-an-html-calculator-app-from-scratch-using-javascript-4454b8714b98/ https://codepen.io/pen/tour/welcome/start 下面展示一些 内联代码片。 <!DOCTYPE html> <html lang"en">…...

性能测试工具——LoadRunner(1)

一、LoadRunner三大组件 1.1每个组件是干什么的 VUG&#xff1a;录制脚本(编写脚本) Controller&#xff1a;设计场景&#xff0c;运行场景 Analysis&#xff1a;产生性能测试报告 1.2三大组件之间的关系 二、LoadRunner脚本录制 2.1了解WebTours系统 启动WebTours&#xf…...

安科瑞物联网表在虚拟电厂的应用

安科瑞 崔丽洁 应用场景 一般应用于控制中心 功能 能计量当前组合有功电能&#xff0c;正向有功电能&#xff0c;反向有功电能&#xff0c;正向无功电能&#xff0c;反向无功电能&#xff1b; ADW300支持RS485通讯、LORA通讯、NB、4G及Wifi通讯&#xff1b; 三套时段表,一年可以…...

XSS和CSRF

web安全策略和同源策略的意义 如果登陆了一个网站&#xff0c;不小心又打开另一个恶意网站&#xff0c;如果没有安全策略&#xff0c;则他可以对已登录的网站进行任意的dom操作、伪造接口请求等&#xff0c;因此安全策略是必要的&#xff1b; 浏览器的同源策略限制了非同源的域…...

2.物联网LWIP网络

一。创建工程 1.Cubemx创建工程 &#xff08;1&#xff09;操作系统的时钟配置 &#xff08;2&#xff09;配置ETH 注意&#xff1a;根据底板原理图&#xff0c;不是核心板原理图 &#xff08;3&#xff09;配置USART1串口&#xff0c;配置为异步通信 注意&#xff1a;配置结…...

tomcat多实例与动静分离

实验&#xff1a;在一台虚拟机上配置多台tomcat 1.配置 tomcat 环境变量 vim /etc/profile.d/tomcat.sh source /etc/profile.d/tomcat.sh 2.修改 tomcat2 中的 server.xml 文件&#xff0c;要求各 tomcat 实例配置不能有重复的端口号 vim /usr/local/tomcat/tomcat2/conf/…...

K8S下SpringCloud应用无损下线

废话不多说直接上代码&#xff0c;一种2个步骤 步骤一&#xff1a; 添加以下代码到SpringCloud应用中 import cn.hutool.extra.spring.SpringUtil; import com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration; import lombok.RequiredArgsConstructor; import lo…...

CEC2013(MATLAB):遗传算法(Genetic Algorithm,GA)求解CEC2013的28个函数

一、遗传算法GA 遗传算法&#xff08;Genetic Algorithm&#xff0c;GA&#xff09;起源于对生物系统所进行的计算机模拟研究&#xff0c;是一种随机全局搜索优化方法&#xff0c;它模拟了自然选择和遗传中发生的复制、交叉(crossover)和变异(mutation)等现象&#xff0c;从任…...

Linux tar包安装 Prometheus 和 Grafana

0. 介绍 用tar包的方式安装 Prometheus 和 Grafana Prometheus:开源的监控方案Grafana:将Prometheus的数据可视化平台 1. Prometheus 1. 下载 与 解压 官网下载: https://prometheus.io/download/#prometheus上传至机器解压命令:tar -xzf prometheus-*.tar.gz 2. 启动与暂…...

新一代分布式融合存储,数据场景All In One

1、摘要 2023年5月11日&#xff0c;浪潮信息全国巡展广州站正式启航。会上&#xff0c;重磅发布新一代分布式融合存储AS13000G7&#xff0c;其采用极致融合架构设计理念&#xff0c;实现同一套存储满足四种非结构化数据的“All In One”高效融合&#xff0c;数据存力提升300%&a…...

CGroupAndroid实践篇】三、Android CGroup控制组初始化

前面已经提到,android在init阶段,通过init trigger来触发控制组节点的创建,包括foreground,background,top-app,rt,system,dex2opt,system-background,nnapi-hal,camera-daemon,restricted等。 我们来看下android在init.rc中,是如何创建这些控制组节点的,如下:…...

lscpu的各个参数是什么意思?

$ lscpu Architecture: x86_64 #架构 CPU op-mode(s): 32-bit, 64-bit #运行方式 Byte Order: Little Endian #字节顺序 CPU(s): 96 #逻辑cpu数 On-line CPU(s) list: 0-95 #在线cpu Thread(s) per core: 2 #每个核包含线程…...

Linux学习————redis服务

目录 一、redis主从服务 一、redis主从服务概念 二、redis主从服务作用 三、缺点 四、主从复制流程 五、搭建主从服务 配置基础环境 下载epel源&#xff0c;下载redis​编辑 二、哨兵模式 一、概念 二、作用 三、缺点 四、结构 五、搭建 修改哨兵配置文件 启动服务…...

【C++手撕系列】——设计日期类实现日期计算器

【C手撕系列】——设计日期类实现日期计算器&#x1f60e; 前言&#x1f64c;C嘎嘎类中六大护法实现代码&#xff1a;获取每一个月天数的函数源码分享构造函数源码分享拷贝构造函数源码分享析构函数源码分享赋值运算符重载函数源码分享取地址和const取地址运算符重载函数源码分…...

FFmpeg常见命令行(四):FFmpeg流媒体

前言 在Android音视频开发中&#xff0c;网上知识点过于零碎&#xff0c;自学起来难度非常大&#xff0c;不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》&#xff0c;结合我自己的工作学习经历&#xff0c;我准备写一个音视频系列blog。本文是音视频系…...

ftp访问ubuntu文件系统

ftp访问ubuntu文件系统 安装vsftpd服务器 sudo apt-get install vsftpd启动ftp服务 sudo service vsftpd start编辑vsftdp的配置文件 sudo vim /etc/vsftpd.conf找到write_enable字段并修改, 设定可以进行写操作,保存并退出 write_enable=YES从新启动ftp服务...

网络防御(6)

密码学综合应用 定义&#xff1a; 密码学综合应用是指将密码学的理论和技术应用于各种场景中&#xff0c;以保障信息的安全性、完整性和可靠性。密码学的应用范围非常广泛&#xff0c;包括通信安全、网络安全、电子商务、数字签名、认证、密钥管理等。 密码学综合应用的实例…...

【Nginx15】Nginx学习:HTTP核心模块(十二)内嵌变量

Nginx学习&#xff1a;HTTP核心模块&#xff08;十二&#xff09;内嵌变量 关于内嵌变量&#xff0c;其实就是 Nginx 开放给我们的在配置文件中可以使用的变量。源码中无非就是替换成真实的代码变量进行操作。这些变量可以帮助我们做很多事情。之前的文章中其实也有不少地方用到…...

2023年中国HPV宫颈癌疫苗需求量、竞争格局、市场规模及行业细分产品规模分析[图]

HPV宫颈癌疫苗也是人乳头瘤病毒疫苗&#xff0c;由重组表达的HPV主要衣壳蛋白L1病毒样颗粒制备而成&#xff0c;可以预防由HPV感染及其引起的各种疾病&#xff0c;包括宫颈癌、阴道癌、肛门癌和口咽癌等癌症&#xff0c;及相关癌前病变。 目前中国在售的HPV疫苗包括万泰生物的二…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

论文阅读:Matting by Generation

今天介绍一篇关于 matting 抠图的文章&#xff0c;抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法&#xff0c;已经有很多的工作和这个任务相关。这两年 diffusion 模型很火&#xff0c;大家又开始用 diffusion 模型做各种 CV 任务了&am…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...