JavaScript基础速成

由于学web时只学了后端,现在到了前后端联调的场景发现看不懂前端代码,于是开始恶补

看了下基础内容发现html和css比较好看懂,但JavaScript比较迷,大概知道组件id绑定事件

下面选取看菜鸟教程补充的JS知识

JS的作用

JS是在html搭建好骨架,css设计好样式的基础上添加交互性和其他动态功能。

下面是基本案例,可以看到JS定义函数绑定了html写的一个按钮,让这个按钮可以动态显示日期

<!DOCTYPE html>
<html>
<title>基础教程(cainiaojc.com)</title>
<body><h1>第一个javascript示例入门</h1><button type="button" onclick="showDate()">点我显示日期和时间</button><p id="output"></p><script>
function showDate() {document.getElementById("output").innerHTML = new Date();
}
</script></body>
</html>

具体而言,JS可以实现以下功能:

  • JavaScript可以更改HTML属性

  • JavaScript可以隐藏和显示HTML元素

  • JavaScript可以添加和删除HTML元素

  • JavaScript可以更改元素的样式(CSS)和位置

  • JavaScript可以修改文本内容

  • JavaScript可以监视鼠标单击,悬停等事件并对其做出反应

  • JavaScript可以创建警告弹出窗口,以向用户显示信息或警告消息

  • JavaScript可以在将用户输入提交到服务器之前对其进行验证

JS用法

  • (传统)可以在<script>标记之间插入JavaScript代码

  • (简单的JS代码)使用事件属性(例如onclick,onkeypress等)将JavaScript代码直接放在HTML标记内

  • (复杂的JS代码)创建一个外部JavaScript文件,然后通过

输出

经典Hello World 写入浏览器控制台使用 console.log()

<script>
console.log("Hello World")
</script>
  • 写入HTML元素使用 innerHTML

  • 写入文档流使用 document.write()

  • 弹出警告框,使用 window.alert()

基本语法

变量

可以使用let(对于块级变量),var(对于函数级变量)或const(只读)声明变量。

仅使用var而没赋值时变量具有值​​​​​​​undefined,表示尚未为变量分配值,或者根本没有声明变量。

var x;
x = 1;
var y = 1;

标识符

变量,函数或属性的名称在JavaScript中称为标识符,JavaScript 标识符必须以字母、下划线(_)或美元符($)开始,后续的字符可以是字母、数字、下划线或美元符。

所有JavaScript标识符均区分大小写,标识符的约定是使用camelCase(驼峰命名)编写的。

注释

和Java的一样,单行注释以双斜杠(//)开头,行注释以斜杠和星号(/*)开头,以星号和斜杠(*/)结束。

数据类型

好消息,JS变量定义时不用声明类型,因为会动态分配

 var length = 4;// Number 数字var firstName = "Vishal";  // String 字符串var user = {firstName:"Vishal", age:22};  // Object 对象var fruits = ["Apple", "Mango", "Banana"];// Array 数组

Number

JS中数字具有64位,不分整数和浮点数,但底层也和其他语言一样

toExponential(),toFixed(),toPrecision()得到对应位数的数
valueOf()得到原始数值(像Java Integer拆包)
Number()转换数字,parseInt(),parseFloat()解析数字

String

JS中单双引号都可以包字符串

+ 运算符用于拼接字符串,还可以用于长代码换行

直接定义的字符串变量是string,而使用new创建的是字符串对象,属于object。

var city = new String("New Delhi");

​​​​​​​length,concat(),toUpperCase(),split(),trim(),replace(),substring(),charAt()和Java一样

此外还有indexOf(),lastIndexOf(),search()用于匹配。

运算符

基本都跟其他语言一样,只有几个特殊的

**=:求幂之后再赋值

===:相等且同类型

!==: 不相等且不同类型

三元运算符:

var status = (age >= 18) ? "adult" : "minor";

delete运算符可删除对象,对象的属性或数组中指定索引处的元素

var user = {firstName:"Vishal", age:"22", color:"blue"};
delete user.firstName;  // returns true
var fruits = ["Apple", "Mango", "Banana"];
delete fruits[0];   // delete "Apple"

in:看在不在集合里

instanceof:看指定的对象是否属于指定的对象类型

控制流

if语句,if...else语句,else...if语句,switch语句,while循环,do while循环,for循环都跟Java完全一样。也用continue和break跳出循环。

for...in循环迭代的对象的属性,以任意的顺序

var myObj = {
name: "VISHAL",
age: 22,
height: 175,
city: "New Delhi",
getNothing: function () {return "";}
};for (let x in myObj) {
document.write(x);
}

for...of循环迭代数据,该迭代的对象定义要遍历

let iterable = [10, 20, 30, 40, 50];for (let x of iterable) {
document.write(x);
}

函数

function nameOfFunction(parameter1, parameter2, ..., parameterN) {// 要执行的代码return 返回值;}
//调用函数,返回值将存储在x中
var x = nameOfFunction(parameter1, parameter2, ..., parameterN);

还有个类似匿名函数,用变量名调用

var square = function(number) { return number * number; };var x = square(5);

对象

像经常看到的JSON,里面还可以定义函数

 var user = {firstName: "Vishal",lastName : "Choudhary",age  : 22,location : "New Delhi",getName  : function() {return this.firstName + " " + this.lastName;}};

可以用.和数组索引来访问对象属性

user.firstName;
user["firstName"];

访问对象方法也和Java一样

user.getName();

当使用关键字声明JavaScript变量时new,该变量将作为对象创建:

var a = new Number();  // 将a声明为Number对象
var b = new String();  // 将b声明为String对象
var c = new Boolean();   // 将c声明为Boolean对象

数组

也和Java一致,再添加元素事如果能刚好接上下一个可以为下一个索引分配值,不确定就用push

let fruits = ["Apple", "Mango", "Banana", "Orange"];
fruits[4] = "Guava";

其他的pop(),shift(),concat(),slice(),fill(),sort(),reverse()也可以望文生义

forEach()方法对数组的每个元素执行一次提供的函数,也和Java很像

var fruits = ["Apple", "Mango", "Banana", "Orange"];
var result = document.getElementById("result");fruits.forEach(function(element, index, array) {result.innerHTML += index + ": " + element + "<br>";
});

map()方法返回一个新数组,不会改变原始数组。同时新数组中的元素为原始数组元素调用函数处理后的值,并按照原始数组元素顺序依次处理元素

var nums1 = [1, 5, 20, 14, 55, 16];
var nums2 = nums1.map(twice);function twice(element, index, array) {return (element * 2);
}

filter(),find(),every()同理

事件

事件是在浏览器中发生的操作,可由用户或浏览器本身启动

  • 页面加载完成

  • 用户单击一个按钮

  • 用户滚动文档

  • 用户调整浏览器大小

  • 用户移动鼠标

  • 用户提交表单

  • 用户按下键盘上的一个键

  • HTML输入字段已更改

使用方法为:

  • 内联事件处理程序(html上)

  • <p onclick="this.innerHTML = 'Hello world'">单击此处更改此文本</p>
  • 事件处理程序属性

  • let para = document.querySelector("#para");para.onclick = function() {this.innerHTML = "Hello world";
    }
  • 事件监听器

let para = document.querySelector("#para");
para.addEventListener("click", changeText);function changeText() {para.innerHTML = "Hello world";
}

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

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

相关文章

PDF文件格式(一):新版格式交叉引用表

PDF交叉引用表是PDF的重要组成部分&#xff0c;本文介绍的是新交叉引用表&#xff0c;这种引用表的格式是PDF的obj格式&#xff0c;内容是被压缩存放在obj下的stream中&#xff0c;因此比常规的引用表格式复杂。下面就开始介绍这种交叉引用表的格式和解析的方法&#xff1a; 1…

文心一言4.0API接入指南

概述 文心一言是百度打造出来的人工智能大语言模型&#xff0c;具备跨模态、跨语言的深度语义理解与生成能力&#xff0c;文心一言有五大能力&#xff0c;文学创作、商业文案创作、数理逻辑推算、中文理解、多模态生成&#xff0c;其在搜索问答、内容创作生成、智能办公等众多…

LeetCode、790. 多米诺和托米诺平铺【中等,二维DP,可转一维】

文章目录 前言LeetCode、790. 多米诺和托米诺平铺【中等&#xff0c;二维DP&#xff0c;可转一维】题目与分类思路二维解法二维转一维 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质…

飞天使-k8s知识点12-kubernetes散装知识点1-架构有状态资源对象分类

文章目录 k8s架构图有状态和无状态服务 资源和对象对象规约和状态 资源的对象-资源的分类元数据型与集群型资源命名空间 k8s架构图 有状态和无状态服务 区分有状态和无状态服务有利于维护yaml文件 因为配置不同资源和对象 命令行yaml来定义对象对象规约和状态 规约 spec 描述…

嵌入式软件设计方式与方法

1、嵌入式软件与设计模式 思从深而行从简 软件开发&#xff0c;难的不是编写软件&#xff0c;而是编写功能正常的软件。软件工程化才能保证软件质量和项目进度&#xff0c;而设计模式使代码开发真正工程化&#xff0c;设计模式是软件工程的基石。 所谓设计模式就是对常见问题的…

idea(2023.3.3 ) spring boot热部署,修改热部署延迟时间

1、添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency>载入依赖 2、设置编辑器 设置两个选项 设置热部署更新延迟时…

功率电阻器应用 (electroschematics.com)

功率电阻器的应用非常广泛&#xff0c;因此无法轻易地将其制成表格。这里讨论的是一些实用的、有用的应用程序&#xff0c;你会发现它们很有趣。首先是一些典型的管状功率电阻器的图像。 一些常见的功率电阻器应用 电阻加热器 电流检测 – 分流应用 缓冲器应用 泄放电阻 浪…

MC34063异常发热分析

问题描述&#xff1a; 工程现场反馈若干电源转换模块损坏&#xff0c;没有输出。拿到问题模块后&#xff0c;查看有一个MC34063周围的PCB有比较明显的高温痕迹&#xff0c;配套的电感也有明显的高温过热痕迹。 问题调查&#xff1a; MC34063的电路非常经典&#xff08;虽然自…

RabbitMQ 安装

下载erlang语言&#xff1a; erlang语言 下载RabbitMQ rabbitmq 安装erlang 1.以管理员身份安装erlang 2.弹出框选择next 3.选择安装路径&#xff0c;亦可以安装在默认路径 4.接下来一路点击下一步&#xff0c;无需任何修改&#xff0c;直到 install安装为止&#xff…

微服务限流(漏桶算法、令牌桶算法)

在微服务架构中&#xff0c;限流是一种重要的技术手段&#xff0c;用于控制服务接收的流量&#xff0c;以保护系统免受突发流量冲击。漏桶算法和令牌桶算法是两种常见的限流算法。同时&#xff0c;负载均衡策略和自定义负载均衡也是确保服务稳定性和高效性的关键措施。下面将深…

力扣:131. 分割回文串

回溯解法思路&#xff1a; 1.先声明一个集合来接受全部的回文子串组合&#xff0c;在声明一个集合来接收单个回文子串的组合。 2.写一个回溯函数&#xff0c;里面有终止条件和遍历全部组合的for循环来进行遍历全部的组合&#xff0c;终止条件为开始索引等于字符串的长度时&am…

政安晨:机器学习快速入门(二){基于Python与Pandas} {建立您的第一个机器学习模型}

现在咱们要一起创建您的第一个机器学习模型啦&#xff01; 选择建模数据 你的数据集包含太多变量&#xff0c;让你无法理解&#xff0c;甚至无法很好地打印出来。你如何将这大量的数据减少到你能理解的程度&#xff1f; 我们将从直觉上选择几个变量。后续课程将向你展示自动优…

【教学类-46-05】吉祥字门贴5.0(华光彩云_CNKI 文本框 空心字涂色 ,繁简都可以,建议简体)

作品展示 背景需求&#xff1a; 1、制作了空心字的第1款 华光通心圆_CNKI &#xff0c;发现它不能识别某些简体字&#xff0c;但可以识别他们的繁体字&#xff08;繁体为准&#xff09; 【教学类-46-01】吉祥字门贴1.0&#xff08;华光通心圆_CNKI 文本框 空心字涂色&#xf…

掌握Linux du命令:高效查看文件和目录大小

今天我们在生产环境中的服务器上收到了有关/var磁盘目录使用率较高的警报。为了解决这一问题&#xff0c;我们进行了/var目录下一些大文件的清理和转移操作。在查找那些占用磁盘空间较多的文件时&#xff0c;我们频繁使用了du命令。在Linux系统中&#xff0c;du命令是一款功能强…

Webpack插件浅析

常用的webpack插件功能介绍&#xff1a; 1.HotModuleReplacementPlugin 模块热更新插件。Hot-Module-Replacement的热更新是依赖于webpack-dev-server&#xff0c;有时是在打包文件改变时更新打包文件或者重新加载刷新整个页面&#xff0c;HMR是只更新修改的部分。 HotModul…

SpringBoot集成axis发布WebService服务

文章目录 1、使用maven-web项目生成server-config.wsdd文件1.1、新建maven-web项目1.1.1、新建项目1.1.2、添加依赖 1.2、编写服务接口和实现类1.2.1、OrderService接口1.2.2、OrderServiceImpl实现类 1.3、配置deploy.wsdd文件deploy.wsdd文件 1.4、配置tomcat1.4.1、配置tomc…

C++ Webserver从零开始:基础知识(八)——多线程编程

线程概述 现代Linux系统主要使用的线程库是NPTL&#xff0c;在Linux中可以通过 getconf GNU_LIBPTHREAD_VERSION 获取Linux线程库版本。谈到线程&#xff0c;就不得不提及线程模型 线程模型 本小节概念较多&#xff0c;采用问答式进行讲解&#xff0c;以帮助读者理解 什么…

Matlab:利用1D-CNN(一维卷积神经网络),分析高光谱曲线数据或时序数据

1DCNN 简介&#xff1a; 1D-CNN&#xff08;一维卷积神经网络&#xff09;是一种特殊类型的卷积神经网络&#xff0c;设计用于处理一维序列数据。这种网络结构通常由多个卷积层和池化层交替组成&#xff0c;最后使用全连接层将提取的特征映射到输出。 以下是1D-CNN的主要组成…

详细分析Redis中数值乱码的根本原因以及解决方式

目录 前言1. 问题所示2. 原理分析3. 拓展 前言 对于这方面的相关知识推荐阅读&#xff1a; Redis框架从入门到学精&#xff08;全&#xff09;Java关于RedisTemplate的使用分析 附代码java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09; …

在(龙芯 3A6000)loongnix下编译syncthing

在loongnix下编译syncthing Syncthing&#xff08;https://syncthing.net/&#xff09; 是一个开源的 P2P 文件同步工具&#xff0c;可用于在多个设备&#xff08;包括 Android 手机&#xff09;之间同步文件。 – Ankush Das&#xff08;作者&#xff09;。因为工作资料保存需…