[前端系列第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
本文将带领大家,从零开始学习JavaScript,fighting~ 目录 一、JavaScript简介 二、变量和数据类型 三、注释和分号 四、算术运算符 五、表达式和语句 六、代码块和作用域 七、函数(最重要) 一、JavaScript简介 JavaScript&…...

html 计算器界面
其他链接: 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:录制脚本(编写脚本) Controller:设计场景,运行场景 Analysis:产生性能测试报告 1.2三大组件之间的关系 二、LoadRunner脚本录制 2.1了解WebTours系统 启动WebTours…...

安科瑞物联网表在虚拟电厂的应用
安科瑞 崔丽洁 应用场景 一般应用于控制中心 功能 能计量当前组合有功电能,正向有功电能,反向有功电能,正向无功电能,反向无功电能; ADW300支持RS485通讯、LORA通讯、NB、4G及Wifi通讯; 三套时段表,一年可以…...
XSS和CSRF
web安全策略和同源策略的意义 如果登陆了一个网站,不小心又打开另一个恶意网站,如果没有安全策略,则他可以对已登录的网站进行任意的dom操作、伪造接口请求等,因此安全策略是必要的; 浏览器的同源策略限制了非同源的域…...

2.物联网LWIP网络
一。创建工程 1.Cubemx创建工程 (1)操作系统的时钟配置 (2)配置ETH 注意:根据底板原理图,不是核心板原理图 (3)配置USART1串口,配置为异步通信 注意:配置结…...

tomcat多实例与动静分离
实验:在一台虚拟机上配置多台tomcat 1.配置 tomcat 环境变量 vim /etc/profile.d/tomcat.sh source /etc/profile.d/tomcat.sh 2.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号 vim /usr/local/tomcat/tomcat2/conf/…...
K8S下SpringCloud应用无损下线
废话不多说直接上代码,一种2个步骤 步骤一: 添加以下代码到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 遗传算法(Genetic Algorithm,GA)起源于对生物系统所进行的计算机模拟研究,是一种随机全局搜索优化方法,它模拟了自然选择和遗传中发生的复制、交叉(crossover)和变异(mutation)等现象,从任…...
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日,浪潮信息全国巡展广州站正式启航。会上,重磅发布新一代分布式融合存储AS13000G7,其采用极致融合架构设计理念,实现同一套存储满足四种非结构化数据的“All In One”高效融合,数据存力提升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源,下载redis编辑 二、哨兵模式 一、概念 二、作用 三、缺点 四、结构 五、搭建 修改哨兵配置文件 启动服务…...

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

FFmpeg常见命令行(四):FFmpeg流媒体
前言 在Android音视频开发中,网上知识点过于零碎,自学起来难度非常大,不过音视频大牛Jhuster提出了《Android 音视频从入门到提高 - 任务列表》,结合我自己的工作学习经历,我准备写一个音视频系列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)
密码学综合应用 定义: 密码学综合应用是指将密码学的理论和技术应用于各种场景中,以保障信息的安全性、完整性和可靠性。密码学的应用范围非常广泛,包括通信安全、网络安全、电子商务、数字签名、认证、密钥管理等。 密码学综合应用的实例…...
【Nginx15】Nginx学习:HTTP核心模块(十二)内嵌变量
Nginx学习:HTTP核心模块(十二)内嵌变量 关于内嵌变量,其实就是 Nginx 开放给我们的在配置文件中可以使用的变量。源码中无非就是替换成真实的代码变量进行操作。这些变量可以帮助我们做很多事情。之前的文章中其实也有不少地方用到…...

2023年中国HPV宫颈癌疫苗需求量、竞争格局、市场规模及行业细分产品规模分析[图]
HPV宫颈癌疫苗也是人乳头瘤病毒疫苗,由重组表达的HPV主要衣壳蛋白L1病毒样颗粒制备而成,可以预防由HPV感染及其引起的各种疾病,包括宫颈癌、阴道癌、肛门癌和口咽癌等癌症,及相关癌前病变。 目前中国在售的HPV疫苗包括万泰生物的二…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

九天毕昇深度学习平台 | 如何安装库?
pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP
编辑-虚拟网络编辑器-更改设置 选择桥接模式,然后找到相应的网卡(可以查看自己本机的网络连接) windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置,选择刚才配置的桥接模式 静态ip设置: 我用的ubuntu24桌…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...