JavaEE——简单认识JavaScript

文章目录

  • 一、简单认识 JavaScript 的组成
  • 二、基本的输入输出和简单语法
  • 三、变量的使用
  • 四、JS 中的动态类型
    • 图示解释常见语言的类型形式
  • 五、JS中的数组
  • 六、JS 中的函数
  • 七、JS 中的对象

一、简单认识 JavaScript 的组成

对于 JavaScript ,其中的组成大致分为下面的三类:

  • ECMAScript(简称 ES): JavaScript 语法
  • DOM: 页面文档对象模型, 对页面中的元素进行操作
  • BOM: 浏览器对象模型, 对浏览器窗口进行操作

在这里,因为是简单认识,所以我向大家简单描述 ES 部分和 DOM 中的较为常用的 API

二、基本的输入输出和简单语法

1. 输入输出

输入: prompt
输出: alter
输出: console.log

2. 这里,我通过最简单的语句,向大家描述 JavaScript 的书写形式。

1.行内式

所谓行内式,就是直接嵌入到 html 的元素内部。

<div onclick="alert('hello js');">这是一个div点我下试试</div>

在这里插入图片描述
这里点击后,就会在页面中弹出这样的弹框。

2.内嵌式

将内容写入 script 标签中

    <script>alert("hi JavaScript")</script>

在这里插入图片描述
同样,打开网页就会弹出这样的弹窗。

3.外部式

就是将内容单独的写到 .js 文件中。

	alert('hello');
    <script src="app.js"></script>

在这里插入图片描述

上面描述的就是 JavaScript 的三种代码形式。但是,要注意的是,这里的操作都会弹出一些对话框,会阻止用户进行界面上其他地方的操作。 这种对话框被称之为 “静态对话框”。

为了避免上述情况,在后面我会用另外一种方式,让代码运行的情况在 控制台显示。
使用 console.log 属性就可以在控制台实现打印。
console.log('hello world');
在这里插入图片描述

三、变量的使用

首先,在这里先展示一段代码:

    <script>var a = 10;console.log(a);var b = 'hello';console.log(b);</script>

在这里插入图片描述
通过上面的代码,我们可以明确的发现一件事情:
在 JS 中,变量的定义不必明确的写出类型!

注意:
在上面的代码中,我们定义变量使用的是 var 。但是,为了更加接近 C++,Java 主流语言,后面关于变量的定义均使用 let 进行定义!

四、JS 中的动态类型

动态类型: 一个变量在程序 运行过程中,类型可以改变。(典型语言:JS,Python,PHP…)
静态类型: 一个变量在程序 运行过程中,类型不能改变。(典型语言:C,Java,C++…)

阐述动态类型的优缺点:
优点:
代码的形式会相对灵活,因为定义一个元素不需要特别明确的类型.
缺点:
当前变量下面是什么类型,内部存储了什么样的值,都是不确定的。

了解 JS 中的几种类型

  • number: 数字. 不区分整数和小数.
  • boolean: true 真, false 假.
  • string: 字符串类型.
  • undefined: 只有唯一的值 undefined. 表示未定义的值.
  • null: 只有唯一的值 null. 表示空值.

这里需要注意 undefined 这个类型,在其他的语言中,如果那个元素没有定义直接报错。而 JS 不会报错,会返回一个 undefined

解释 JS 中的 “隐式类型转换” 以及代码展示

    <script>let a = 10;console.log(a);a = 'hello';console.log(a);let c = true;let d = 1;console.log(c==d);</script>

在这里插入图片描述
我们可以发现,这里将不同类型尽可能的转换乘客相同的类型。
在先后面的代码中,出现了将 true 隐式转换为 1 了。

图示解释常见语言的类型形式

我们以 静态类型、动态类型 作为纵坐标。强类型、弱类型 作为横坐标
如图所示:
在这里插入图片描述
目前所公认的,强类型相较于弱类型更好。
类型强,相当于不同类型之间的区分度就会高。编译器能做的检查工作就比较多,代码就不容易出错。

五、JS中的数组

1.创建数组

	let arr = [];

在 JS 中 [ ] 来表示数组

2.使用数组,在其中存入元素

   let arr1 = [1,'hello',true,[]];

我们可以发现,JS 中,数组中存储的元素不要求统一!可以是任何类型。

3.访问数组中的元素

        let arr1 = [1,'hello',true,[]];console.log(arr1[0]);console.log(arr1[1]);console.log(arr1[2]);console.log(arr1[3]);console.log(arr1[100]);

在这里插入图片描述
在这里我们发现,越界的访问,并没有造成代码的出错,而是产生了 undefined 。

此时,如果我们给 arr1[100] 进行赋值会产生什么情况?

        arr1[100] = 'haha';console.log(arr1[100]);

在这里插入图片描述
如图,我们发现,添加值成功了。

到此,我们就可以发现 JS 中的数组与 Java 在存储元素上有着很大的不同了

JS 的数组,并不是传统意义上的数组(只能按下标来取),而是含有一个 “键值对” 这样的特性了。
可以理解为 数组 + Map 这样的混血

4.JS 中的 for 语句
这里的 for 语句有下面三种写法

        let arr = ['小明','小红','小军'];arr[100] = '小亮'//遍历数组元素for(let i = 0; i < arr.length; i++){console.log(arr[i]);}console.log('----------------------');for(let i in arr){//此处的 i 是数组的下标console.log(arr[i]);}console.log('----------------------');for (let elem of arr) {console.log(elem);}

在这里插入图片描述
如上图所示,我们会发现,for 循环的条件不同,对应的,这里得到的结果也就会有所不同。

5. 删除数组中的元素——splice 方法删除。

splice(startlndex, count, 边长参数…)
这个方法有四中不同的使用方式。

startlndex: 表示从下标为什么位置的地方开始删除。
count: 表示向后删除几个元素。

用法,就是将后面变长参数的内容,替换到前面的指定区域之中。

  • 如果后面没有变长参数,就相当于删除。
        arr.splice(2,1);console.log(arr);

在这里插入图片描述

  • 如果后面的变长参数和前面指定的区间个数一样,此时就是 修改/替换。
        arr.splice(2,1,'替换元素');console.log(arr);

在这里插入图片描述

  • 确定下标位置,向后元素数量为 0 ,写如边长参数,此时就会将元素插入到指定位置处。
        arr.splice(1,0,'插入的元素');console.log(arr);

在这里插入图片描述

六、JS 中的函数

1.认识 JS 中的函数

在这里插入图片描述
简单实现一个方法

        function add(x,y){return x+y;}console.log(add(10,'hello'));

我们会发现,这里的函数在定义时并没有对元素给出类型。
所以,同样在传输元素时对元素也没有限定要求。

2. JS 中函数的特性

  • 当实参个数少于形参个数,多余出来的形参的值就是 undefined。
        function add(x,y){return x+y;}console.log(add(10));

在这里插入图片描述

  • 函数表达式
   let add2 = function(){let result = 0;for(let elem of arguments){result += elem;}return result;}

如上述代码所示,我们先定义了一个匿名函数,然后将函数赋值给一个 add2 变量。

在 JS 中,可以像普通变量一样,将函数赋值给一个变量。
同时,也可以将函数作为另一个函数的参数,或者将函数作为另一个函数的返回值。(在 Java 中这样是不行的)

解释 “将函数作为另一个函数的返回值”
在这里插入图片描述
这种是将 two 中的具体实现方式告诉 one 进行操作。
在这里插入图片描述
这个方法并不知道 two 中具体的实现方式,只是获取其中的最终结果。

3.展示 js 中变量的作用域

        let num = 1;function test1(){let num = 2;function test2(){let num = 3;console.log('test1:'+num);}test2();console.log('tese2:'+num);}test1();console.log('global:'+num);

在这里插入图片描述

七、JS 中的对象

我们知道 JS 不是面向对象的编程语言,但是在里存在着对象的概念。
同样的,这里所说的对象就和 Java 中的差别很大了。

在 JS 中,没有封装,继承,多态。甚至没有 类!
虽然没有类,但是,所有的对象类都是 object

代码展示对象的创建:

        let student = {name: '小明',age: '18',height: '179',weight:'76',sing: function(){console.log("赞美太阳");}};

这里有一个常用的写法,我们已经知道所有的对象类都是 object。

        let person = new Object();person.name = '李强';person.age = 19;student.sing = function(){console.log('赞美太阳');}

js 中的对象有什么数据,有什么方法,这都不是提前约定好的,是可以随时添加的。

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

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

相关文章

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的水果质量识别系统(Python+PySide6界面+训练代码)

摘要&#xff1a;本篇博客详尽介绍了一套基于深度学习的水果质量识别系统及其实现代码。系统采用了尖端的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等前代算法进行了详细的性能对比分析&#xff0c;提供在识别图像、视频、实时视频流和批量文件中水果方面的高效准确性…

【探索AI】探索未来-计算机专业必看的几部电影

计算机专业必看的几部电影 计算机专业必看的几部电影&#xff0c;就像一场精彩的编程盛宴&#xff01;《黑客帝国》让你穿越虚拟世界&#xff0c;感受高科技的魅力&#xff1b;《社交网络》揭示了互联网巨头的创业之路&#xff0c;《源代码》带你穿越时间解救世界&#xff0c;…

【Java程序设计】【C00327】基于Springboot的高校教师教研信息填报系统(有论文)

基于Springboot的高校教师教研信息填报系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校教师教研信息填报系统&#xff0c;本系统有管理员、教研管理以及教研人员三种角色&#xff1b; 管理员&#xff1a…

行为树入门:BehaviorTree.CPP Groot2练习(叶子节点)(2)

以《行为树BehaviorTree学习记录1_基本概念》练习。 1 SequenceNode顺序控制节点 代码下载 git clone https://gitee.com/Luweizhiyuan2020/ros2_bt.git例程 1.1 sequence 顺序执行 下载版本SequenceNode1。 1.2 ReactiveSequence 异步执行 注意&#xff1a; ①only a…

打造透明银行存储:Solidity智能合约的实践与探索

引言&#xff1a; 随着区块链技术的快速发展&#xff0c;智能合约作为其中的核心组件&#xff0c;正被越来越多地应用于各种场景。作为智能合约的编程语言&#xff0c;Solidity因其对以太坊平台的深度支持而备受关注。在这篇文章中&#xff0c;我们将通过构建一个透明的银行存储…

shell自定义日志输出函数log

Background 在编写比较复杂的脚本时&#xff0c;需要输出相关日志信息&#xff0c;方便知悉脚本的执行情况以及问题的排查。 源码 log.sh # 自定义日志函数 function log(){if [[ $1 "i" || $1 "info" ]]; thenecho -ne "\033[1;34mINFO: \033[0m&…

如何将字体添加到 ONLYOFFICE 桌面编辑器8.0

作者&#xff1a;VincentYoung 为你写好的文字挑选一款好看的字体然而自带的字体列表却找不到你喜欢的怎么办&#xff1f;这只需要自己手动安装一款字体即可。这里教你在不同的桌面操作系统里的多种字体安装方法。 ONLYOFFICE 桌面编辑器 ONLYOFFICE 桌面编辑器是一款免费的办…

《互联网的世界》第三讲-tcp

dns 找到了地址&#xff0c;spf 确定了路径&#xff0c;如何运输数据呢&#xff1f;今天讲 tcp。 计算机网络领域的特定技术是最后当你干这个事时才要用的&#xff0c;我对孩子们这样说&#xff0c;实际上你可以随便看一个快递单子来理解端到端传输协议。 源地址&#xff0c…

qtcreator-ros 安装记录

文章目录 ros_qtc_pluginros_qt_demo参考链接ros_qtc_plugin ROS Qt Creator 插件是专门为 ROS 开发的,通过简化任务和为 ROS 工具创建集中位置来提高开发人员的效率。由于它建立在Qt Creator平台之上,用户可以访问其所有现有功能,例如:语法高亮,代码索引,编辑器(C++,…

[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

【Intel oneAPI实战】使用英特尔套件解决杂草-农作物检测分类的视觉问题

目录 一、简介&#xff1a;计算机视觉挑战——检测并清除杂草二、基于YOLO的杂草-农作物检测分类2.1、YOLO简介2.2、基于YOLO的杂草-农作物检测分类解决方案 三、基于YOLO的杂草-农作物检测分类系统设计3.1、基于flask框架的demo应用程序后端3.2、基于Vue框架的demo应用程序前端…

Python的报错类型

在编写python代码时&#xff0c;当不当使用时&#xff0c;python会给出错误提示&#xff0c;常见的错误类型有如下几种&#xff1a; 1.TpyeError类型错误 ① 传入的参数数量不对&#xff1a;如调abs()有且仅有1个参数&#xff0c;但给出了两个时&#xff0c;python会给出提示…

yolov9,使用自定义的数据训练推理

[源码 &#x1f40b;]( GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information) [论文 &#x1f4d8;](arxiv.org/pdf/2402.13616.pdf) 论文摘要&#xff1a;本文介绍了一种新的目标检测…

网络防御保护3

一、双击热备 1&#xff0c;根据网段划分配置IP地址和安全区域 2&#xff0c;配置双机热备场景 主备场景配置 抢占延时仅对主设备生效。 hello报文周期时间--- 默认为1S&#xff0c;可以修改&#xff0c;但是&#xff0c;主备设备需要同时修改为相同值。 同步配置 双机热备的…

【C++】手把手教你手搓模拟实现string类

前言 string类一直都是C的经典问题&#xff0c;之前的文章已经对string类做了一个基本的介绍&#xff08;string类的基本常用接口&#xff09;&#xff0c;为了更好理解string类的功能&#xff0c;此篇文章将手把手教你带你手搓模拟实现string类&#xff0c;快来一起学习吧&am…

预训练大模型LLM的PEFT之—— Prefix Tuning

简介 Prefix Tuning是2021.01提出来的&#xff0c;在它之前&#xff0c;我们使用prompt主要是人工设计模板或者自动化搜索模板&#xff0c;也就是prompt范式的第一阶段&#xff0c;就是在输入上加上prompt文本&#xff0c;再对输出进行映射。这种离散模板对模型的鲁棒性很差。…

SpringBoot接收参数的几种形式

SpringBoot接收参数的几种形式 在SpringBoot中获取参数基本方式有5种,需要都掌握. 这里需要记住一个技术术语或概念 API接口: 你写好的那个URL地址,就被称为API接口 1. 接收常规参数 给/param/demo1这个URL接口发送id, name两个参数 以上是以GET请求类型进行发送,实际发送…

Kubernetes IoTDB系列 | IoTDB数据库同步|IoTDB数据库高可用 | v1.3.0

目录 一、介绍二、应用场景三、IoTDB 数据库搭建四、数据同步一、介绍 IoTDB 数据同步功能可以将 IoTDB 的数据传输到另一个数据平台,我们将一个数据同步任务称为 Pipe。 一个 Pipe 包含三个子任务(插件): 抽取(Extract)处理(Process)发送(Connect)Pipe 允许用户自…

周鸿祎免费课演示AI新品,瞬时流量暴增现场增加服务器

2月29日&#xff0c;360创始人周鸿祎首堂AI免费课开讲&#xff0c;吸引千万网友围观。演讲现场周鸿祎演示了两款AI驱动的新产品。在演示测试版360AI搜索时&#xff0c;由于用户体验火爆&#xff0c;瞬时流量暴增44倍&#xff0c;为满足用户和全网用户需求临时增加了服务器。产品…

springboot+vue网站开发-渲染前端列表页面-缩略图信息

springbootvue网站开发-渲染前端列表页面-缩略图信息&#xff01;内容比较多。这是第一篇&#xff0c;先给大家展示的是&#xff0c;基础的代码封装&#xff0c;vue前端网站模块的代码展示。 我们使用到了pinia-存储我们请求过来的数据&#xff0c;它是一个状态管理&#xff0c…