JavaScript——前端基础3
目录
JavaScript简介
优点
可做的事情
运行
第一个JavaScript程序
搭建开发环境
安装的软件
操作
在浏览器中使用JavaScript文件
分离JS
使用node运行JS文件
语法
变量与常量
原生数据类型
模板字符串
字符串的内置方法
数组
对象
对象数组和JSON
if条件语句
三目运算符
switch条件语句
for和while循环
JavaScript简介
-
JavaScript 是一种轻量级的脚本语言。
-
脚本语言:不具备开发操作系统的能力,只用来编写控制其他大型应用程序的“脚本”。
-
JavaScript 是一种嵌入式(embedded)语言。核心语法不多
优点
-
操控浏览器的能力
-
广泛的使用领域
-
易学性
可做的事情
-
Web/移动端App
-
实时联网App
-
命令行工具
-
游戏
运行
-
浏览器:有JavaScript引擎
-
Node:包含谷歌浏览器、v8引擎的C++程序。使其可以在浏览器外面跑JavaScript程序。意味着可以用JavaScript程序给网页/移动端app做后端
第一个JavaScript程序
-
打开浏览器,Fn+F12
-
在控制台console中可以编写JavaScript
-
console.log();//打印
搭建开发环境
安装的软件
-
vscode
-
node.js(安装后一定要重启才会生效)
-
执行JavaScript代码
-
安装第三方库
-
操作
-
在vscode中安装插件:live server
-
右键文件,open with live server
-
打开电脑的默认浏览器
-
页面会自动刷新
-
在浏览器中使用JavaScript文件
-
在html文件中,将script标签放在body标签的末尾
-
浏览器解析文件是自上而下的,需要先将内容渲染出来

-
分离JS
-
将JS代码从html文件中剥离出去
-
创建一个js文件,将js语句写入文件中
-
在html文件中的script标签中引入js文件
<script src="index.js"></script>
使用node运行JS文件
-
在win+r的命令中输入node --version,判断是否安装好了
-
ctrl+`:快捷键打开vscode的终端
-
输入node 文件名.js:会在终端中输入js文件中的语句
-
像浏览器一样执行出同样的结果
-
node是用来运行JS的运行环境
-
语法
-
JS文档
JavaScript 指南 - JavaScript | MDN Web 中文网
变量与常量
-
变量
-
var:全局变量(最好不用)
-
let
-
-
常量
-
const
-
原生数据类型
-
String
-
Number
-
Boolean
-
null
-
一个值被定义为空
-
-
underfined
-
不存在被定义
-
//String Number Boolean null underfinedconst username="John";const year=2025;const rate=4.5;const isCool=true;const x=null;const y=undefined;let z;console.log(typeof username);//输出数据类型
模板字符串
-
连接字符串
//连接(老方法)console.log("My name is "+username+" and I am "+age);//模板字符串console.log(`My name is ${username} and I am ${age}`);
字符串的内置方法
const s="Hello World";console.log(s.length);//字符串长度console.log(s.toUpperCase());//全部大写console.log(s.toLowerCase());//全部小写console.log(s.substring(0,5));//分割字符,起始和终止,左闭右开console.log(s.substring(0,5).toUpperCase());//方法结合console.log(s.split());//字符串转换成数组console.log(s.split(''));//最小分割const m='technology, computers,it, code';console.log(m.split(','));//逗号分割
数组
//数组,两种申明方式const Number=new Array(1,2,3,4,5);const fruits=['apple','pear','banana'];console.log(Number);console.log(fruits[1]);//pearfruits[2]="orange";//const申明的数组可以被改变内部fruits.push("mango");//数组末尾增加元素用pushfruits.unshift('strawberries');//数组头部添加元素strawberriesconsole.log(fruits);fruits.pop(fruits);//删除数组末尾的元素console.log(fruits);console.log(Array.isArray(fruits));//判断是否是数组console.log(fruits.indexOf("orange"));//得到特定元素的索引
对象
//对象:拥有属性和方法的数据,表示为键值对的组合//申明一个person变量,{}包含对象,键值对申明属性const person={firstName:"John",lastName:"Doe",age:30,hobbies:['music','movies','sports'],address:{street:"50 main st",city:"Boston",state:"MA",},};person.email="john@gmail.com";//增加属性console.log(person);console.log(person.firstName,person.lastName);//访问选中的属性//结构,更高级的操作//用同名的变量将值从person中抽取出来const {firstName,lastName,address:{city},}=person;console.log(city);
对象数组和JSON
-
网站:freeformatter.com 将对象数组复制粘贴-formatted json-会给我们自动生成json格式的数据
[{id:1,text:"Take out trash",isCompleted:true,},{id:2,text:"Meeting with boss",isCompleted:true,},{id:3,text:"Dentist appt",isCompleted:false,},] -
//对象数组 const tools=[{id:1,text:"Take out trash",isCompleted:true,},{id:2,text:"Meeting with boss",isCompleted:true,},{id:3,text:"Dentist appt",isCompleted:false,}, ]; console.log(tools); console.log(tools[1].text); //Json是一种数据格式,常被用在api和服务器与客户端的数据传输过程中 //Json和对象数组类似 //将JS转化为json格式 const todoJSON=JSON.stringify(tools) console.log(todoJSON);
if条件语句
//if条件语句
//===三等号会考虑数据类型(更常用)
//==双等号不会考虑:10 '10'一样
//||或,&&与
const n=10;
const b=4;
if(n===10||b===4){console.log("n is 10 and b is 4");
}else if(n>10){console.log("n is greater than 10");
}else{console.log("n is less than 10");
}
if(n=='10'&&b==4){console.log("n is 10 and b is 4");
}
三目运算符
//三目运算符(前为真 后为假。?:)
const c=10;
const color=x>10?'red':'blue';
console.log(color);
switch条件语句
//switch语句,一种条件语句
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");
}
for和while循环
//Forfor(let i=0;i<10;i++){console.log(i);console.log(`For Loop Number:${i}`);}console.log("");for(let i=0;i<tools.length;i++){console.log(tools[i].text);}console.log("");//另一种for的写法for(let todo of tools){console.log(todo.text);}console.log("");//whilelet i=0;while(i<10){console.log(`For Loop Number:${i}`);i++;}
相关文章:
JavaScript——前端基础3
目录 JavaScript简介 优点 可做的事情 运行 第一个JavaScript程序 搭建开发环境 安装的软件 操作 在浏览器中使用JavaScript文件 分离JS 使用node运行JS文件 语法 变量与常量 原生数据类型 模板字符串 字符串的内置方法 数组 对象 对象数组和JSON if条件语…...
零基础学习机器学习分类模型
下面将带你通过一个简单的机器学习项目,使用Python实现一个常见的分类问题。我们将使用著名的Iris数据集,来构建一个机器学习模型,进行花卉品种的分类。整个过程会包含: 原理介绍:机器学习的基本概念。数据加载和预处…...
Spring 源码硬核解析系列专题(十):Spring Data JPA 的 ORM 源码解析
在前几期中,我们从 Spring 核心到 Spring Boot、Spring Cloud、Spring Security 和 Spring Batch,逐步揭示了 Spring 生态的多样性。在企业级开发中,数据访问是不可或缺的部分,而 Spring Data JPA 通过简化 JPA(Java Persistence API)操作,成为主流的 ORM 框架。本篇将深…...
视频推拉流EasyDSS点播平台云端录像播放异常问题的排查与解决
EasyDSS视频直播点播平台是一个功能全面的系统,提供视频转码、点播、直播、视频推拉流以及H.265视频播放等一站式服务。该平台与RTMP高清摄像头配合使用,能够接收无人机设备的实时视频流,实现无人机视频推流直播和巡检等多种应用。 最近&…...
Oracle23版本 创建用户 报 00959和65096错误解决办法
00959错误解决办法,用户名必须已 c##或者C##开头 65096错误解决办法,创建用户名时去掉DEFAULT TABLESPACE smallrainTablespace这个属性 附上oracle 23版本创建表空间和用户语句; sqlplus sys as sysdba CREATE TABLESPACE smallrainOrac…...
Vue3 中 defineOptions 学习指南
在 Vue 3.3 及之后的版本中,defineOptions 是一个重要的宏(macro),主要用于在 <script setup> 语法糖中声明组件的选项(Options),解决了传统 <script setup> 无法直接定义组件选项的…...
简单说一下什么是RPC
部分内容来源:JavaGuide RPC是什么 RPC是远程调用 RPC的原理 RPC的五个部分 为了能够帮助小伙伴们理解 RPC 原理,我们可以将整个 RPC 的核心功能看作是下面 5 个部分实现的: 客户端(服务消费端):调用…...
Pany-v2:LFI漏洞探测与敏感文件(私钥窃取/其他)自动探测工具
地址:https://github.com/MartinxMax/pany 关于Pany-v2 Pany-v2 是一款 LFI(本地文件包含)漏洞探测工具,具备自动识别敏感文件的能力。它能够利用 LFI 漏洞检测并提取 id_rsa 私钥、系统密码文件以及其他可能导致安全风险的敏感信息。该工具…...
北京大学DeepSeek与AIGC应用(PDF无套路下载)
近年来,人工智能技术飞速发展,尤其是大模型和生成式AI(AIGC)的突破,正在重塑各行各业的生产方式与创新路径。 北京大学联合DeepSeek团队推出的内部研讨教程《DeepSeek与AIGC应用》,以通俗易懂的方式系统解…...
AWS SDK for Java 1.x 403问题解决方法和原因
问题表现 使用AWS SDK for Java 1.x访问S3,已经确认文件存在,且具有权限,仍然出现403 Forbidden应答。 解决方法 升级到AWS SDK for Java 2.x。 问题原因 AWS签名机制严格依赖请求的精确路径格式,任何URI的差异(如…...
Vue进阶之Vue2源码解析
Vue2源码解析 源码解析目录解析package.json入口查找入口文件确定vue入口this.\_init_ 方法$mount 挂载方法Vue.prototype._renderVue.prototype._updateVue.prototype._patch vue2 vue3 源码解析 目录解析 vue2.6之后的版本都做的是兼容Vue3的内容,2.6版本前的内…...
unity lua属性绑定刷新
我们现在有一个 角色属性类叫heroModel,内容如下,当heroModel中的等级发生变化的时候,我们需要刷新界面显示等级信息,通常我们是在收到等级升级成功的协议的时候,发送一个事件,UI界面接受到这个事件的时候,刷新一下等级…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_t
ngx_conf_t 定义在src/core/ngx_core.h typedef struct ngx_conf_s ngx_conf_t;ngx_conf_s 定义在 src/core/ngx_conf_file.h struct ngx_conf_s {char *name;ngx_array_t *args;ngx_cycle_t *cycle;ngx_pool_t *po…...
gtest 和 gmock讲解
Google Test(gtest)和 Google Mock(gmock)是 Google 开发的用于 C 的测试框架和模拟框架,以下是对它们的详细讲解: Google Test(gtest) 简介 Google Test 是一个用于 C 的单元测试框…...
Ubuntu20.04安装Redis
目录 切换到root用户 使用 apt install redis 安装redis 修改配置文件 编辑 重新启动服务器 使用Redis客户端连接服务器 切换到root用户 如果没有切换到root用户的,切换到root用户。 使用 apt install redis 安装redis 遇到y/n直接y即可。 redis安装好之…...
利用 DeepSeek 总结运维知识库的总结报告
一、背景 在运维工作中,知识库是重要的知识沉淀与共享工具。随着公司业务的发展,运维涉及的系统、设备和技术日益复杂,原有的运维知识库内容繁杂、缺乏条理,难以高效检索和利用。为了提升知识库的可用性,我尝试借助 D…...
Go基于协程池的延迟任务调度器
原理 通过用一个goroutine以及堆来存储要待调度的延迟任务,当达到调度时间后,将其添加到协程池中去执行。 主要是使用了chan、Mutex、atomic及ants协程池来实现。 用途 主要是用于高并发及大量定时任务要处理的情况,如果使用Go协程来实现每…...
一个原教旨的多路径 TCP
前面提到过 ECMP 和 TCP 之间的互不友好,pacing 收益和中断开销的互斥,在事实上阻碍了 packet-based LB 的部署,也限制了交换机,服务器的并发性能,同时潜在增加了 bufferbloat 的概率,而适用 packet-based …...
OSPF BIT 类型说明
注:本文为 “OSPF BIT 类型 | LSA 类型 ” 相关文章合辑。 机翻,未校。 15 OSPF BIT Types Explained 15 种 OSPF BIT 类型说明 Rashmi Bhardwaj Distribution of routing information within a single autonomous system in larger networks is per…...
如何获取mac os 安装盘
发现虚拟机VirtualBox支持Mac虚拟,就想尝试一下。但是发现Mac的安装盘特别难拿到,因此留档。 第一种方法 在mac环境下,使用softwareupdate命令来获取mac安装,能获得当前设备支持的系统。 使用这个命令:/usr/sbin/soft…...
【深度学习】强化学习(RL)-A3C(Asynchronous Advantage Actor-Critic)
A3C(Asynchronous Advantage Actor-Critic)详解 A3C(Asynchronous Advantage Actor-Critic) 是 深度强化学习(Deep Reinforcement Learning, DRL) 领域的重要算法,由 DeepMind 在 2016 年提出。…...
vue的双向绑定是怎么实现的
Vue.js 的双向绑定是通过 数据劫持(Data Observation) 和 发布-订阅模式(Publish-Subscribe Pattern) 实现的。具体来说,Vue 使用了以下核心技术: 数据劫持:通过 Object.defineProperty 或 Prox…...
在 Mac mini M2 上本地部署 DeepSeek-R1:14B:使用 Ollama 和 Chatbox 的完整指南
随着人工智能技术的飞速发展,本地部署大型语言模型(LLM)已成为许多技术爱好者的热门选择。本地部署不仅能够保护隐私,还能提供更灵活的使用体验。本文将详细介绍如何在 Mac mini M2(24GB 内存)上部署 DeepS…...
docker-compose部署onlyoffice8.3.0并支持ssl,且支持通过nginx代理,关闭JWT配置
编写docker-compose文件 mkdir -p /data/onlyoffice && echo "version: 3services:onlyoffice:container_name: OnlyOfficeimage: onlyoffice/documentserver:8.3.0restart: alwaysports:- 8088:80- 64431:443environment:TZ: Asia/ShanghaiJWT_ENABLED: falsevol…...
如何配置虚拟机的IP上网
要配置虚拟机的IP地址以便上网,你可以按照以下步骤操作: 打开虚拟机软件,确保虚拟机的网络设置为“桥接模式”或“NAT模式”,这样虚拟机可以与物理网络连接。 在虚拟机操作系统中,打开网络设置界面,一般在…...
【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别
老式路由器TPLINK,接入校园网后一人登录,所有人都能通过连接此路由器上网,无法解决遂上网搜索,无果,幸而偶然看到一个帖子说要把信号源网线接入路由器lan口,开启新世界。 一、wan-lan,lan-lan区…...
Python--内置模块和开发规范(下)
2. 开发规范 2.1 单文件应用 文件结构示例 # 文件注释 import os import jsonDB_PATH "data.json" # 常量放顶部def load_data():"""函数注释:加载数据"""if os.path.exists(DB_PATH):with open(DB_PATH, "r"…...
DeepSeek开源周Day5压轴登场:3FS与Smallpond,能否终结AI数据瓶颈之争?
2025年2月28日,DeepSeek开源周迎来了第五天,也是本次活动的收官之日。自2月24日启动以来,DeepSeek团队以每天一个开源项目的节奏,陆续向全球开发者展示了他们在人工智能基础设施领域的最新成果。今天,他们发布了Fire-F…...
[密码学实战]Java实现SM2数字信封(结合SM4对称加密)生成与解析
一、代码运行结果 二、什么是数字信封 2.1 基本概念 数字信封(Digital Envelope) 是一种结合对称加密与非对称加密的混合加密技术,通过以下步骤实现高效安全的数据传输: 对称加密:使用SM4算法加密原始数据,处理速度快,适合大数据量。非对称加密:使用SM2公钥加密SM4密…...
redis序列化设置
redis序列化设置 redis序列化设置序列化对象里有org.joda.time.DateTime1)、报错内容如下2)、解决方案:分别自定义时间的序列化和反序列化,以对象形式关联到redisTemplate redis序列化设置 redis序列化设置,通过自定义…...
