从零开始的JavaScript基础!

news2024/11/28 10:43:25

目录

一、JavaScript 的概述

二、如何在HTML页面中使用JS

(一)、行内式 

(二)、内嵌式

(三)、外链式

(四)、基本执行顺序

1.从上到下线性执行:

2.阻塞行为:

(五)、JS 输出方式

1. alert() 通过浏览器弹出框进行输出

 2.document.write() 直接在网页页面中进行输出

 3.console.log() 通过浏览器控制台进行输出,此方法最常用!

(六)、注释

1、单行注释

2、多行注释

三、JS 语法基础

(一)、变量

1.变量名

2.数据类型

3.变量提升现象

(二)、运算符

1.typeof 运算符

2.算术运算符

(1)、加减乘除运算符 :+ 、-、 *、 /

(2)、取余运算符 :%

(3)、自增自减运算符:  ++、   --

3.算术赋值结合运算符:  +=    -=     *=     /=     %=

4.比较运算符

​编辑

5.布尔运算符

(1)、取反运算符 : !

(2)、且运算符 : &&

(3)、或运算符: ||


一、JavaScript 的概述

JavaScript 是一种web脚本编程语言,简称 JS;主要用于向HTML页面中添加交互行为;不需要编译,直接由浏览器解释运行,语法和Java类似。因此,在语法学习过程中,需注意与Java对比学习。
注意:JavaScript 与 Java 是两种完全不同的语言(只是语法相似),无论在概念还是设计上。

二、如何在HTML页面中使用JS

与CSS的引用类似,主要有三种方式:行内式,内嵌式,外链式

(一)、行内式 

直接在HTML中 <body> 标签内添加 js 脚本,一般需要监听事件(非常不推荐,了解即可)

行内式比较简单直接,适合较少且简单的代码,但这不利于代码较多或者其他网页的复用

运行代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS的使用方式及执行顺序</title>
</head>
<body>
        <!-- 行内式:直接在HTML标签内添加js脚本,一般需要监听事件(非常不推荐,了解即可) -->
        <input type="submit" value="登录" onclick="javascript:alert('登录成功');"/>
</body>
</html>

运行结果如下:

(二)、内嵌式

在HTML文档中任意位置内嵌 js 脚本

运行代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS的使用方式及执行顺序</title>
</head>
<body>
    <!-- 内嵌式:js代码不多时,或者做实验时,可以用一下 -->
    <script>
        // 文档对象输出函数
        document.write("测试内嵌js的引用")  //document.write()向网页输出内容
    </script>
</body>
</html>

运行结果如下:

(三)、外链式

在HTML文档中任意位置,通过src属性链接外部js脚本(可以是本地文件,也可以是网络URL)

运行代码如下:

首先创建一个名为 script.js 的文件,内容如下:

document.write("外链式引用JS脚本");

然后在 HTML 文件中引入这个js文件:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS的使用方式及执行顺序</title>
</head>
<body>
    <!-- 外链式:在HTML文档中任意位置,通过src属性链接外部js脚本 
         (可以是本地文件,也可以是网络URL) -->
    <!-- 外链式:工程项目开发主打引用方式,可以解除耦合 -->
    <script src="./1_my.js">
    </script>
</body>
</html>

运行结果如下:

注意:

1.  <script> 标签可以放置在HTML文档中任意位置

2.  在HTML文档中,<script>标签的个数没有限制

(四)、基本执行顺序

1.从上到下线性执行:

HTML中的JS脚本通常是从上到下线性执行的。也就是说,浏览器会按照HTML文档中JS脚本出现的顺序依次执行它们。

2.阻塞行为:

当浏览器遇到<script>标签时(无论是内嵌JS还是通过src属性引入的外部JS文件),它会停止解析和渲染页面,优先下载、解析并执行该标签中的JS代码。这个过程会阻塞页面其他内容的下载和渲染,直到JS代码执行完毕。

因此可以使用 delay(time)来使网页的内容延迟出现,避免阻塞行为的出现。例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS的使用方式及执行顺序</title>
</head>
<body>
    <script>
        document.write("测试内嵌js的引用")
        document.write("测试内嵌js的引用")
        document.write("测试内嵌js的引用")
        // 延时语句,延时30分钟
        Delay(30)
    </script>
</body>
</html>

(五)、JS 输出方式

有三种 JS 输出方式:alert() 、document.write() 、console.log()

1. alert() 通过浏览器弹出框进行输出

运行代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS的输出方式</title>
</head>
<body>
    <!-- 代码调试时,偶尔能用一下 -->
    <script> 
        alert("第一种:通过浏览器弹出框进行输出"); 
    </script>
</body>
</html>

运行结果如下:

 2.document.write() 直接在网页页面中进行输出

运行代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS的输出方式</title>
</head>
<body>
    <!-- 在现代Web前端开发中已经不推荐使用,因为它会覆盖整个页面的内容 -->
    <script> 
        document.write("第二种:直接在网页页面中进行输出"); 
    </script>
</body>
</html>

运行结果如下:

 3.console.log() 通过浏览器控制台进行输出,此方法最常用!

运行代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS的输出方式</title>
</head>
<body>
    <!-- 主要用于代码的调试,强烈推荐这种方式 -->
    <script> 
        console.log("第三种:通过浏览器控制台进行输出!此方法最常用!"); 
    </script>
</body>
</html>

运行结果如下:

主要用于代码的调试,强烈推荐这种方式。在运行代码后点击F12,点控制台即可查看。

(六)、注释

1、单行注释

单行注释以 // 开头。

任何位于 // 与行末之间的文本都会被 JavaScript 忽略(不会执行)。

快捷键:ctrl+/

2、多行注释

多行注释以 /* 开头,以 */ 结尾。

任何位于 /* 和 */ 之间的文本都会被 JavaScript 忽略。

三、JS 语法基础

(一)、变量

1.变量名

变量名可由:字母、美元符号($)、下划线(_)和数字组成,但数字不能开头。

变量的声明和赋值语句var的语法为:var 变量名称1[=初始值1] , 变量名称2[=初始值2]...;
注意:

  1. 不能用JavaScript的关键字,如var、int、true等作变量名称。
  2. JavaScript是一种对数据类型变量要求不太严格的语言,所以 不必声明每一 个变量的类型,但在使用变量之前先进行声明是一种好的习惯。变量的类型在赋值时根据数据类型来确定。

2.数据类型

使用 typeof 查询数据类型

  • 数值类型(number):包括整数和浮点数。例如 8、5.20 等。

运行代码如下:

    <script> 
        // 数字 number
        var x1=65.30;
        document.write(x1 + " -> 数据类型:"+ typeof x1 + "<br>");

        var x2=65;
        document.write(x2 + " -> 数据类型:"+ typeof x2 + "<br>");
    </script>

运行结果如下: 

  • 字符串类型(string):用单引号或双引号括起来的字符序列。例如 'Hello'、"World" 等。

运行代码如下:

    <script> 
        //字符串 string
        var str1="Good morning!"; 
        document.write(str1 + " -> 数据类型:"+ typeof str1 + "<br>"); 

        //双引号包含带单引号的字符串 string
        var str2="This is 'Tom'"; 
        document.write(str2 + " -> 数据类型:"+ typeof str2 + "<br>");

        //单引号包含带双引号的字符串 string
        var str3='This is "Tom"';
        document.write(str3 + " -> 数据类型:"+ typeof str3 + "<br>");
    </script>

运行结果如下:

  • 布尔类型(boolean):只有两个值,true 和 false。常用于条件判断和逻辑运算。

运行代码如下:

    <script> 
        // 布尔值 boolean
        var x=true;
        document.write(x + " -> 数据类型:"+ typeof x + "<br>");
    </script>

运行结果如下:

  •  null 类型:表示一个空值,通常用于表示对象为空或者变量尚未赋值。

运行代码如下:

    <script> 
        // 特殊情况:尽管 null 是一个表示空值的特殊关键字,
        // 但 typeof null 会返回 "object"。
        // 这是一个著名的 JavaScript 特性,
        // 虽然有些令人困惑,但已经存在了很长时间(知道一下就行,不必理会)
        var person2=null;
        document.write(person2 + " -> 数据类型:"+ typeof person2 + "<br>");
    </script>

运行结果如下:

  • undefined 类型:表示变量已声明但未赋值的状态。

运行代码如下:

    <script> 
        // 未定义类型 undefined
        var person1;
        document.write(person1 + " -> 数据类型:"+ typeof person1 + "<br>");
    </script>

运行结果如下:

  • object 类型:对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。

运行代码如下:

    <script> 
        // 对象 object   (对象类型下的数组类型)
        var persons = new Array("Tom","Jack","Kate");
        document.write(persons + " -> 数据类型:"+ typeof persons + "<br>");
    </script>

运行结果如下:

3.变量提升现象

变量提升是JavaScript中的一个概念。简单来说,就是在代码执行之前,JavaScript会把变量的声明提升到当前作用域的最前面。

概述:所有的变量的声明语句(不包含赋值),都会被提升到代码的头部

    <script> 
        // 原来写的语句(变量先用后声明)
        console.log(num);
        var num = 10; 

        // 实际运行效果(变量提升现象)
        var num;
        console.log(num);
        num = 10; 
    </script>

(二)、运算符

1.typeof 运算符

typeof 是用于确定JavaScript变量的类型的

运行代码如下:

    <script> 
        var x1 = 8;
        document.write(x1 + " -> 数据类型:"+ typeof x1 + "<br>");
    </script>

运行结果如下: 

2.算术运算符

(1)、加减乘除运算符 :+ 、-、 *、 /

运行代码如下:

    <script>
        var a=1;
        var b=2;
        var c=a+b;
        document.write(c+"->的数据类型:"+typeof c+"<br>");
    </script>

运行结果如下:

(2)、取余运算符 :%

运行代码如下:

    <script> 
        //取余运算符 :%
        var a=4;
        var b=3;
        var c=a%b;
        document.write(c+"->的数据类型:"+typeof c+"<br>");
    </script>

运行结果如下:

(3)、自增自减运算符:  ++、   --

运行代码如下:

    <script> 
        //自增自减运算符:  ++、   --
        //自增自减运算符:  ++、   --
        var a=1;
        var b=1;
        document.write(++a +"->的数据类型:"+typeof a+"<br>");
        document.write(b++ +"->的数据类型:"+typeof b+"<br>");
    </script>

运行结果如下:

自加运算符在变量后面(b++),先返回变量的值,然后才开始自加 ,相当于c=b;b=b+1;这样返回的值就是1.

3.算术赋值结合运算符:  +=    -=     *=     /=     %=

运算符举例等同于
+=a+=ba=a+b
-=a-=ba=a-b
*=a*=ba=a*b
/=a/=ba=a/b
%=a%=ba=a%b

运行代码如下:

    <script> 
        var a=1;
        var b=1;
        console.log(a+=b); //a=a+b,a=2
        console.log(a*=b); //a=a*b,由于上面的运算a以及赋值为2,所以a*b=2*1=2
        console.log(a%=b); //a=a%b
    </script>

运行结果如下:

4.比较运算符

比较运算符用于比较两个值的大小,然后返回一个布尔值,表示是否满足指定的条件,它返回的结果是True和False。
注意:相等运算符不严格要求数据类型相等,只要转换后的值相等就可以;严格相等是对数据类型也要一致。

运行代码如下

    <script>
            var a=1;
            var b="1";
            var c=2
            console.log(a==b); 
            console.log(a===b);
            console.log(a>c);
    </script>

运行结果如下:

5.布尔运算符

(1)、取反运算符 : !

①布尔值取反

!true 运行结果为false

!false 运行结果为true

②非布尔值取反

对于非布尔值,取反运算符会将其转为布尔值。以下六个值取反后为true,其他值都为false。
undefined、null、false、0、NaN、空字符串。

(2)、且运算符 : &&

全部为真则为真,有一个为假则为假,全部为假则为假

运行代码如下:

    <script>
        //且运算符 : &&
         var a=true;
        var b=false;
        console.log(a && b);
    </script>

运行结果如下:

(3)、或运算符: ||

全部为真则为真,有真有假也为真,全部为假则为假

运行代码如下:

    <script>
        //或运算符: ||
         var a=true;
        var b=false;
        console.log(a || b);
    </script>

运行结果如下:

将源代码再自行运行一遍加深理解!

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

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

相关文章

“格格不入”的星瑞东方曜,燃油市场有麻烦了

文/王俣祺 导语&#xff1a;在新能源汽车蓬勃发展的当下&#xff0c;吉利近日推出的星瑞东方曜可以说有些“格格不入”了。那么&#xff0c;这款被称为“10万以内唯一选择”的新车&#xff0c;究竟带来了哪些新变化&#xff0c;又会给燃油市场中苦苦坚持的“战友们”带来多大的…

【ACM出版,EI稳定检索,九大高校联合举办, IEEE Fellow支持】2024年计算机视觉与艺术研讨会(CVA 2024)

在线投稿&#xff1a;学术会议-学术交流征稿-学术会议在线-艾思科蓝 2024年计算机视觉与艺术国际学术会议&#xff08;CVA 2024&#xff09;作为2024年人工智能、数字媒体技术与交互设计国际学术会议&#xff08;ICADI 2024)的分会。此次大会旨在汇聚全球在计算机视觉与艺术…

【MySql】-0.1、Unbunt20.04二进制方式安装Mysql5.7和8.0

1、下载Mysql二进制报&#xff08;选择Linux的通用版本&#xff09; mysql官网地址&#xff1a;https://downloads.mysql.com/archives/community/ wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.26-linux-glibc2.12-x86_64.tar wget https://downloads.…

H7-TOOL的LUA小程序教程第16期:脉冲测量,4路PWM,多路GPIO和波形打印(2024-10-25, 更新完毕)

LUA脚本的好处是用户可以根据自己注册的一批API&#xff08;当前TOOL已经提供了几百个函数供大家使用&#xff09;&#xff0c;实现各种小程序&#xff0c;不再限制Flash里面已经下载的程序&#xff0c;就跟手机安装APP差不多&#xff0c;所以在H7-TOOL里面被广泛使用&#xff…

【Cri-Dockerd】安装cri-dockerd

cri-dockerd的作用&#xff1a; 在k8s1.24之前。k8s会通过dockershim来调用docker进行容器运行时containerd&#xff0c;并且会自动安装dockershim&#xff0c;但是从1.24版本之前k8s为了降低容器运行时的调用的复杂度和效率&#xff0c;直接调用containerd了&#xff0c;并且…

java实现的音视频格式转化器

一、前言 最近写了一款图形界面版的音视频格式转化器&#xff0c;可以实现将多种视频之间进行转化&#xff0c;非常好用&#xff0c;如将AVI转换为&#xff0c;TS&#xff0c;FLV&#xff0c;MP4等。音频可将MP3转成WAV。 二、实现 1.需引入相关maven依赖。 <!-- 核心包 -…

Java知识巩固(十二)

I/O JavaIO流了解吗&#xff1f; IO 即 Input/Output&#xff0c;输入和输出。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据库&#xff0c;文件&#xff0c;远程主机&#xff09;的过程即输出。数据传输过程类似于水流&#xff0c;因…

1.3 面向对象 C++面试问题

1.3.1 简述一下什么是面向对象,面向对象与面向过程的区别 什么是面向对象 面向对象&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;是一种编程范式&#xff0c;它通过将现实世界中的实体抽象为“对象”来组织代码。面向对象编程关注对象及其交互&#x…

Visual Studio Code

代码自动保存 打开设置搜索auto save&#xff0c;设置为afterDelay 设置延迟时间&#xff0c;单位是毫秒 启用Ctrl鼠标滚轮对字体进行缩放 搜索Mouse Wheel Zoom&#xff0c;把该选项勾选上即可 Python插件 运行和调试Python

Hash表算法

哈希表 理论知识&#xff08;本文来自于代码随想录摘抄&#xff09;什么是哈希常见的三种哈希结数组&#xff1a;set:map:其他常用方法或者技巧&#xff08;自己总结的&#xff09; 练习题和讲解有效的字母移位词349. 两个数组的交集1. 两数之和454. 四数相加 II15. 三数之和 总…

广泛的四款录屏工具专业软件解析!!!

当代社会的进步&#xff0c;电脑、手机等数码产品的普及&#xff0c;改变了我们的沟通形式&#xff0c;只需要动动手指&#xff0c;就能实现视频连接&#xff0c;影像播放等。有时候就需要我们录屏留存。在市面上的录屏软件种类繁多&#xff0c;从简洁易用的小工具到功能丰富的…

通俗直观介绍ChatGPT背后的大语言模型理论知识

“AI 的 iPhone 时刻到来了”。非算法岗位的研发同学’被迫’学习 AI&#xff0c;产品岗位的同学希望了解 AI。但是&#xff0c;很多自媒体文章要么太严谨、科学&#xff0c;让非科班出身的同学读不懂&#xff1b;要么&#xff0c;写成了科幻文章&#xff0c;很多结论都没有充分…

力扣21 : 合并两个有序链表

链表style 描述&#xff1a; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例&#xff1a; 节点大小相同时&#xff0c;l1的节点在前 何解&#xff1f; 1&#xff0c;遍历两个链表&#xff0c;挨个比较节点大小 同时遍…

MATLAB——入门知识

内容源于b站清风数学建模 目录 1.帮助文档 2.注释 3.特殊字符 4.设置MATLAB数值显示格式 4.1.临时更改 4.2.永久改 5.常用函数 6.易错点 1.帮助文档 doc sum help sum edit sum 2.注释 ctrl R/T 3.特殊字符 4.设置MATLAB数值显示格式 4.1.临时更改 format lon…

LCR 024. 反转链表 最细图片逐行解析过程

LCR 024. 反转链表 给定单链表的头节点 head &#xff0c;请反转链表&#xff0c;并返回反转后的链表的头节点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例…

【JavaEE】【多线程】定时器

目录 一、定时器简介1.1 Timer类1.2 使用案例 二、实现简易定时器2.1 MyTimerTask类2.2 实现schedule方法2.3 构造方法2.4 总代码2.5 测试 一、定时器简介 定时器&#xff1a;就相当于一个闹钟&#xff0c;当我们定的时间到了&#xff0c;那么就执行一些逻辑。 1.1 Timer类 …

TVM前端研究--Relay

文章目录 深度学习IR梳理1. IR属性2. DL前端发展3. DL编译器4. DL编程语言Relay的主要内容一、Expression in Relay1. Dataflow and Control Fragments2. 变量3. 函数3.1 闭包3.2 多态和类型关系3.3. Call4. 算子5. ADT Constructors6. Moudle和Global Function7. 常量和元组8.…

SSL/TLS 密码套件漏洞分析以及修复方法

1. 前言 在当今数字化时代&#xff0c;网络安全至关重要。SSL/TLS 协议作为保障网络通信安全的重要手段&#xff0c;广泛应用于各类网络应用中。然而&#xff0c;如同任何技术一样&#xff0c;SSL/TLS 也并非绝对安全&#xff0c;存在着一些可能被攻击者利用的漏洞。本文将深入…

stm32入门教程--DMA 超详细!!!

目录 简介 工作模式 1、数据转运DMA 2、ADC扫描模式DMA 简介 工作模式 1、数据转运DMA 这个例子的任务是将SRAM的数组DataA&#xff0c;转运到另一个数组DataB中&#xff0c;这个基本结构里的各个参数应该如何配置呢&#xff1f; 首先是外设站点和存储器站点的起始地址、…

大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 3)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…