JavaEE——简单认识JavaScript

news2024/11/20 3:35:09

文章目录

  • 一、简单认识 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.coloradmin.cn/o/1478489.html

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

相关文章

综合练习(一)

目录 列出薪金高于部门 30 的所有员工薪金的员工姓名和薪金、部门名称、部门人数 列出与 ALLEN从事相同工作的所有员工及他们的部门名称、部门人数、领导姓名 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 列出薪金高于部门 30 的所…

打造去中心化透明储蓄罐:Solidity智能合约的又一实践

一、案例背景 传统的储蓄罐通常是由个人或家庭使用&#xff0c;用于存放硬币或小额纸币。然而&#xff0c;这样的储蓄罐缺乏透明性&#xff0c;用户无法实时了解储蓄情况&#xff0c;也无法确保资金的安全性。 通过Solidity智能合约&#xff0c;我们可以构建一个去中心化…

论文笔记:基于互信息估计和最大化的深度表示学习

整理了ICLR2019 LEARNING DEEP REPRESENTATIONS BY MUTUAL INFORMATION ESTIMATION AND MAXIMIZATION&#xff09;论文的阅读笔记 背景模型 论文地址&#xff1a;DIM code&#xff1a;代码地址 背景 发现有用的表示是深度学习的一个核心目标&#xff0c;由于之前的工作已经可以…

使用js写一个登录验证码效果

面试题 登录页面获取验证码的功能&#xff0c;用户点击获取验证码按钮(id”btn1”)&#xff0c;按文字变为“(N)后获取验证码”&#xff0c;N为倒计对秒数&#xff0c;从 60 开始&#xff0c;每秒减一&#xff0c;减到 0的时候&#xff0c;按钮文字变为“获取验证码”&#xff…

Android Kotlin协程实战

你能听懂的Kotlin协程课&#xff0c;跟老司机学&#xff0c;不用自己瞎折腾 认识协程 协程难在哪儿? Ja v a中不曾出现的&#xff0c;新概念概念不清晰&#xff0c;我们看到的大都是不同语言对于协程的实现或者衍生Kotlin 基础不扎实多线程编程基础太薄弱 协程是什么? 协…

Unity | Shader基础知识(第十集:shader常用外部资产单词速成)

目录 一、外部资产简介 二、常用的外部资产单词 三、常用的外部资产单词和引入内部 四、图片资产外部调整的具体讲解 1.Tiling&#xff0c;中文&#xff1a;铺地砖 2.Offset&#xff0c;中文&#xff1a;偏移 五、作者的话 一、外部资产简介 在第六集中&#xff0c;我们…

新王炸:文生视频Sora模型发布,能否引爆AI芯片热潮

前言 前方高能预警&#xff0c;Sora来袭&#xff01; 浅析Sora的技术亮点 语言模型中构建关键词联系 视频素材分解为时空碎片 扩散模型DiT Not for play, But change world! OpenAI的宏大目标 未来已来&#xff0c;只是尚未流行 Sora的成本与OpenAI的7万亿美金豪赌 算…

GPT-SoVITS音色克隆-模型训练步骤

GPT-SoVITS音色克隆-模型训练步骤 GPT-SoVITS模型源码一个简单的TTS后端项目 基于模型部署和训练教程&#xff0c;语雀 模型部署和训练教程 启动模型训练的主页面 1. 切到模型路径 /psycheEpic/GPT-SoVITS进入Python虚拟环境&#xff0c;并挂起执行python脚本 conda activ…

nginx使用详解--缓存使用

Nginx 是一个功能强大的 Web 服务器和反向代理服务器&#xff0c;它可以用于实现静态内容的缓存&#xff0c;缓存可以分为客户端缓存和服务端缓存。 客户端缓存 客户端缓存指的是浏览器缓存, 浏览器缓存是最快的缓存, 因为它直接从本地获取(但有可能需要发送一个协商缓存的请…

leetcode:1974. 使用特殊打字机键入单词的最少时间(python3解法)

难度&#xff1a;简单 有一个特殊打字机&#xff0c;它由一个 圆盘 和一个 指针 组成&#xff0c; 圆盘上标有小写英文字母 a 到 z。只有 当指针指向某个字母时&#xff0c;它才能被键入。指针 初始时 指向字符 a 。 每一秒钟&#xff0c;你可以执行以下操作之一&#xff1a; 将…

算法基础(三)(模拟)

1.模拟算法介绍&#xff1a; 模拟算法通过模拟实际情况来解决问题&#xff0c;一般容易理解但是实现起来比较复杂&#xff0c;有很多需要注意的细节&#xff0c;或者是一些所谓很“麻烦”的东西。模拟题一般不涉及太难的算法&#xff0c;一般就是由较多的简单但是不好处理的部…

RT-Thread+ENV+MDK+STM32CubeMX适配

前言 &#xff08;1&#xff09;如果有嵌入式企业需要招聘湖南区域日常实习生&#xff0c;任何区域的暑假Linux驱动/单片机/RTOS的实习岗位&#xff0c;可C站直接私聊&#xff0c;或者邮件&#xff1a;zhangyixu02gmail.com&#xff0c;此消息至2025年1月1日前均有效 &#xff…

T - SQL使用事务 及 在Winform使用事务

事务适用场景 1 事务使用在存储过程中&#xff0c;直接在数据库中进行编写 2 事务使用在Winfrom项目中 SQl&#xff1a;使用事务转账操作的实例 一般都会找一个变量记录错误的个数&#xff0c;error记录上一句sql的错误和错误编号 declare errornum int 0 -- 定义…

el-table 指定表格合并行与单元格,以及表头合并单元格

1&#xff1a;页面html <template><div class"container"><div class"flex-end"><el-button type"primary" click"allEndBtn">批量办结</el-button><el-button type"primary" click"…

【第十天】C++函数对象/仿函数、谓词、适配器及常见algorithm算法

一、函数对象 重载了函数调用运算符()的类 实例化的对象叫函数对象&#xff0c;也叫仿函数。 如果函数对象 有一个参数 叫&#xff1a;一元函数对象/仿函数如果函数对象 有二个参数 叫&#xff1a;二元函数对象/仿函数如果函数对象 有三个及以上参数 叫&#xff1a;多元函数对…

Java设计模式 | 七大原则之合成复用原则

基本介绍 合成复用原则&#xff08;Composite Reuse Principle&#xff09;尽量使用合成/聚合的方式&#xff0c;而不是使用继承 设计原则核心思想总结 找出应用中可能需要变化之处&#xff0c;把他们独立出来&#xff0c;不要和那些不需要变化的代码混在一起针对接口编程&…

Ubuntu系统下DPDK环境搭建

目录 一.虚拟机配置1.添加一个网卡(桥接模式)2.修改网卡类型3.修改网卡名称4.重启虚拟机5.查看网卡信息6.dpdk配置内存巨型页 三 DPDK源代码下载和编译1.下载源代码2.解压源代码3.安装编译环境4.编译5.设置dpdk的环境变量6.禁止多队列网卡7.加载igb_uio模块8.网卡绑定9.验证测试…

Docker 入门笔记

课程地址 容器技术概述 docker能做什么&#xff1a;将应用程序代码和依赖打包为一个镜像&#xff0c;作为交付介质&#xff0c;在各种环境中部署 相比于虚拟机&#xff0c;docker 只虚拟出一个隔离的程序运行环境&#xff0c;其需要则资源大大减少 容器内的程序就好像直接运…

安装 docker 可视化工具 portainer

portainer 官方网站 https://www.portainer.io/ 一、portainer 介绍 Portainer是一款开源的容器管理平台&#xff0c;它提供了一个直观易用的Web界面&#xff0c;帮助用户管理Docker容器集群、镜像、卷等资源。Portainer 支持多种 Docker 环境&#xff0c;包括本地Docker、Sw…

EXTJS实现自定义表格

宽度自适应 width: 100%, 高度自适应 height: 100% 同时设置表格所处页面高度100% html,body,#griddemo{height: 100%;} 自定义显示的文本内容 Ext.onReady(function () {Ext.QuickTips.init()function sexText(val) {if (val 0) {return <span style"color:green…