当前位置: 首页 > 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疫苗包括万泰生物的二…...

Windows VEH异常处理实战:用C++写一个无痕Hook框架(附完整源码)

Windows VEH异常处理框架深度解析&#xff1a;从原理到工程实践 在Windows系统开发领域&#xff0c;异常处理机制一直是构建健壮软件系统的核心技术之一。VEH&#xff08;Vectored Exception Handling&#xff09;作为Windows异常处理体系中的重要组成部分&#xff0c;不仅为开…...

3个简单步骤,用LeagueAkari提升你的英雄联盟排位胜率

3个简单步骤&#xff0c;用LeagueAkari提升你的英雄联盟排位胜率 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟排位赛中的瓶颈…...

ComfyUI IPAdapter Plus完整指南:用单张图片控制AI图像生成

ComfyUI IPAdapter Plus完整指南&#xff1a;用单张图片控制AI图像生成 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus 想要用一张参考图片就能让AI生成的图像拥有相同的人物特征、艺术风格或构图布局吗…...

互联网大厂 Java 求职面试:从音视频场景到微服务架构的深度探讨

互联网大厂 Java 求职面试&#xff1a;从音视频场景到微服务架构的深度探讨 在互联网大厂的求职过程中&#xff0c;面试官与候选人之间的问答环节往往充满了技术的挑战与趣味的碰撞。本文以严肃的面试官和搞笑的水货程序员燕双非进行对话&#xff0c;带领大家深入了解 Java 技术…...

【紧急预警】C++ MCP网关正在 silently 烧钱!3类GCC未启用的PCH/PGO/LTO组合策略可立即止损

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;C MCP网关成本失控的根因诊断与量化建模 C MCP&#xff08;Model-Controller-Protocol&#xff09;网关在高并发微服务架构中常因资源绑定粒度粗、生命周期管理缺失及协议解析路径未收敛&#xff0c;导…...

别再傻傻print了!用tqdm给你的Python脚本加个进度条,代码瞬间专业

告别print调试&#xff01;用tqdm打造专业级Python进度监控系统 在数据处理和批量任务中&#xff0c;我们常常需要监控长时间运行的循环进度。传统print语句虽然简单直接&#xff0c;但会导致终端输出混乱、难以估算剩余时间&#xff0c;更无法在Jupyter等环境中提供优雅的交互…...

英特尔一季度业绩大超预期,股价飙升20%,复苏势头强劲

英特尔公司公布了第一季度财报&#xff0c;业绩远超分析师预期&#xff0c;显示出首席执行官陈立武领导下的业务转型正逐步收到成效。 这家芯片制造商报告每股调整后收益为29美分&#xff0c;远高于华尔街预测的每股仅1美分的利润预期。当季营收达135.8亿美元&#xff0c;同样大…...

杭电网安复试C语言上机题保姆级攻略:从猴子吃桃到希尔排序,手把手带你搞定

杭电网安复试C语言上机题实战指南&#xff1a;从解题思维到考场策略 去年此时&#xff0c;我和屏幕前的你一样&#xff0c;面对杭电网安复试的上机环节既期待又忐忑。记得第一次看到"猴子吃桃"题目时&#xff0c;那种无从下手的迷茫感至今记忆犹新。但经过系统准备后…...

一篇搞定git

1. Git概述 1.1 Git简介 Git 是一个分布式版本控制工具&#xff0c;通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件&#xff0c;Git 仓库分为两种&#xff1a; 本地仓库&#xff1a;开发人员自己电脑上的 Git 仓库 远程仓库&#xff1a;远…...

Beyond the WORM with MinIO object storage

I find the terminology of WORM (Write Once Read Many) coming back into the IT speak in recent years. In the era of rip and burn, WORM was a natural thing where many of us “youngsters” used to copy files to a blank CD or DVD. I got know about how WORM wor…...