JavaScript基础(超详细)

目录

1.JavaScript概述

2.JavaScript的组成及其基本结构 

1.JavaScript的组成 

1.ECMAScript

ECMAScript是一种由Ecma国际[前向为欧洲计算机制造商协会(European Computer Manufacturers Associaiton)]通过ECMA-262标准化的脚本程序设计语言。其主要描述了JavaScript的语法、变量 、数据类型、运算符。逻辑控制语句、关键字、对象等。

2.DOM

3.BOM

2.JavaScript的基本结构

3.直接写在HTML标签中 

 3.JavaScript的核心语法

1.变量的声明和赋值

1.变量的声明

2.变量的赋值 

2.JavaScript的数据类型 

1.基本数据类型

1.数据类型 

 2.字符串类型

 3.布尔类型

2.特殊数据类型

3.判断数据类型

 3.运算符

4.逻辑控制语句

1.条件语句

2.双分支语句 

3.多分支语句 

5.关键字和保留字 

4.系统对话框

1.alert()

2.confirm() 

3.prompt() 

5. 程序调试

1.Chrome开发者工具

2.alert()方法 


1.JavaScript概述

JavaScript(简述 JS)是一种具有函数优先原则的轻量级、解释型 或即时编译型的编程语言。它的解释器被称为JavaScript引擎,是浏览器的一部分,被广泛用于客户端的脚本语言中,最早是在超文本标记语言(Hypertext Markup Language,HTML,标准通用标记语言下的一个应用)网页上使用的,用来给HTML网页增加动态功能。

除此之外,JavaScript也受到了广大开发者的欢迎,其主要原因如下。

  • 简单易学:能使开发者快速上手。
  • 表单验证:即时的交互,可以减轻服务器端的压力。
  • 页面动态效果:可以编写响应鼠标单击等事件的代码,创建动态页面特效,从而高效地控制页面内容。
  • 客户端处理:代码在客户端的处理器中执行,从而节省带宽,并减少服务器的额外负载。
  • jQuery的基础:JavaScript是学习jQuery的基础,所以先把JavaScript的基础打牢,再学习jQuery会轻松很多。

2.JavaScript的组成及其基本结构 

在使用JavaScript之前,必须了解JavaScript由哪几部分组成,通常写在HTML结构的哪个地方,如何在网页中引入JavaScript代码,下面为大家逐一解答。

1.JavaScript的组成 

尽管ECMAScript标准描述了JavaScript的语法和基本对象,但是它并不是JavaScript唯一的部分。事实上,一个完整的JavaScript由三部分组成,分别是ECMAScript、DOM及BOM解释如下。

1.ECMAScript

ECMAScript是一种由Ecma国际[前向为欧洲计算机制造商协会(European Computer Manufacturers Associaiton)]通过ECMA-262标准化的脚本程序设计语言。其主要描述了JavaScript的语法、变量 、数据类型、运算符。逻辑控制语句、关键字、对象等。

2.DOM

DOM(Document Object Model,文档对象模型)是HTML文档对象模型定义的一套标准方法,主要用来访问和操作HTML文档和操作HTML文档。例如,电商网站页面中弹出的提示框、鼠标移动放大图片等效果都要通过操作DOM来完成。

3.BOM

BOM(Browser Object Model,浏览器对象模型)是用于描述对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。例如,网页弹出新浏览器窗口的能力,移动、关闭和更改浏览器窗口大小的能力等。

DOM及BOM的内容将会在后面章节详细介绍,本章着重介绍ECMAScript标准。

2.JavaScript的基本结构

在使用JavaScript时,可以用<script>标签将代码包裹后再嵌入HTML文档中。浏览器在遇到<script>开始标签时,将逐行读取代码,直到遇到</script>结束标签为止。其基本结构语法如下。

<script type="text/javascript">
//JavaScript 语句;
</script>

在上述语法中,trpe属性用于指定文本使用的语言类别是text/javascript。

3.直接写在HTML标签中 

直接将JavaScript代码写在HTML标签中适用于简短的JavaScript代码,如鼠标单击按钮弹出一个对话框等,这样通常会在按钮标签中加入JavaScript的处理程序。

 3.JavaScript的核心语法

JavaScript的核心语法包含变量的声明和赋值、数据类型、运算符、逻辑控制语句等基本语法。

1.变量的声明和赋值

变量是指程序中一个已经被命名的存储单元,它的主要作用是为数据操作提供存放信息的的容器。变量是相对常量而言的。常量是一个不会改变的固定值,而变量的值可能会随着程序的执行而改变。与Java和C#不同,JavaScript声明变量时无须为其指定数据类型。

1.变量的声明

在JavaScript中,使用变量前需要先声明变量,目前所学阶段所有的JavaScript变量都由关键字var声明,在后面的ES6章节中还会学习let和const关键字,具体语法将在后面章节做详细介绍。使用var声明变量的语法格式如下。

var 变量名;

其中,var是声明变量所使用的关键字。在声明变量名时应注意,变量名可以由数字、字母、下画线及"$"符号组成,但其首字母不能是数字,并且也不可以使用关键字命名,如this、new、return等。下面的语句声明了一个名称name的变量。

var name;

可以使用一个关键字var同时声明多个变量,语法格式如下。

var 变量名列表;

在上述语法中,声明多个变量时,各变量之间用逗号分隔。下面的语句声明了三个变量,分别为name、age、sex。

var name,age,sex;

2.变量的赋值 

在声明变量的同时也可以使用等号(=)对变量进行初始化赋值,语法格式如下。

var 变量名=变量值;

事实上,javaScript提供了多种数据类型,如数值、字符串、数组、对象等。

2.JavaScript的数据类型 

JavaScript是弱类型脚本语言,声明变量时无须指定变量的数据类型,因为JavaScript变量的数据类型是解释时动态决定的。

在JavaScript中,提供了3种基本数据类型和2种特殊类型。

1.基本数据类型

基本数据类型包括数值类型(number)、字符串类型(string)及布尔类型(boolean)。

1.数据类型 

与强类型语言Java和C#不同,JavaScript的数值不仅包括所有的整形变量,还包括所有的浮点型变量。下面的代码声明了存放整形和浮点型的变量。

var num=15;
var num=15.8;

此外,JavaScript支持八进制和十六进制。八进制以0开关,其后的数字可以是任何八进制数字(0~7);十六进制以0x或0X开头,其后的数字是任意的十六进制数字和字母(0~9和A~F)。例如:

var num1=065;//065等于十进制的53
var num2=0X3f;//0X3f等于十进制的63

当数据类型超出了其表述范围时,将出现两个特殊值:Infinity(正无穷大)和-Infinity(负无穷大)。

在浏览器中运行上述代码会发现结果为Infinity,表示正无穷大。另外,在JavaScript中还有一个特殊值——NaN(Not a Number),表示非数字,它是数值类型。例如:

typeof(NaN); //返回值为number

在上述代码中,trpeof()函数用于判断某个值或变量的数据类型,所以当使用typeof判断NaN时,返回的结果是number,即数值类型。

 2.字符串类型

JavaScript的字符串必须用引号括起来,此处的引号既可以是单引号,也可以是双引号。

JavaScript以string类表示字符串,string类包含了一系统方法,具体情况下。

  • charAt():返回指定位置的字符。
  • toUpperCase():把字符串转换成大写。
  • toLowerCase():把字符串转换成小写。
  • indexOf():返回某个指定的字符串在字符串中首次出现的位置。
  • subString():用于提取字符串分割成字符串数组。
  • split():用于把一个字符串中用一些字符替换另一些字符。
  • replace():用于在字符串中用一些字符替换另一些字符。
 3.布尔类型

布尔类型的值只有两个:true和false。布尔类型的值通常是逻辑的运算结果,或用于标志对象的某种状态。

2.特殊数据类型

特殊数据类型包括空类型(null)和未定义类型(undefined),null表示变量的值为空,可以用来检测某个变量是否被赋值。undefined类型的值只有一个undefined,该值用于表示某个变量不存在 ,或者没有为其分配值,也用于表示对象的属性不存在,实际上,undefined是null派生来的,所以JavaScript把它们定义为相等的。

尽管这两个值相等,但是它们的含义不同,其区别在于undefined表示没有为变量设置值或属性不存在;null表示变量是有值的,只有其值为null。

3.判断数据类型

ECMAAScript提供了trypeof运算符来判断某个值或变量的数据类型,其语法格式如下。

typeof(值或变量);

其返回值有如下几种:

  • number:如果变量是数据类型,则返回numder.
  • string:如果变量是字符串类型,则返回string.
  • boolean:如果变量是布尔类型,则返回boolean。
  • object:如果变量是空类型,或者是一种引用类型,如对象、函数、数组、则返回object。
  • undefined:如果变量是未定义类型,则返回undefined。 

 3.运算符

与java中的运算符一样,在JavaScript中,运算符可分为算术运算符、比较运算符、逻辑运算符和赋值运算符。

在上表中需要特别注意的是,“==”用于一般比较,在比较时会自动进行数据类型隐式转换:“===”用于严格比较,即只要数据类型不匹配就返回false。例如,”1“==true,结果返回true;而“1”===true,结果返回false。

4.逻辑控制语句

在JavaScript中,逻辑控制语句用于控制程序的执行顺序,其可以分为条件语句和循环语句。

1.条件语句

条件语句可基于不同的条件执行不同的代码,其可以分为if语句t switch语句。

if(条件){//条件为真时执行的代码
}

2.双分支语句 

双分支语句:由两个分支线组成,如果if条件不成立,那么就会跳入else语句中,其基本语法格式如下。

if(条件){
//条件为真时要执行的代码
}else{
//条件为假时要执行的代码
}

3.多分支语句 

多分支语句:由多个if···else语句组合在一起,其基本语法格式如下。

if(条件){
//执行语句
}else if(条件){
//执行语句
}else{
//执行语句
}

5.关键字和保留字 

ECMA-262描述了一组具有特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。按照规则,关键字也是语言的保留的,不能用作标识符。下表就是ECMAScript的全部关键字。

ECMA-262还描述了另外一组不能用作标识符的保留字。尽管保留字在这门语言中还没有任何特定的用途,但它们有可能在将来被用作关键字。下表就是ECMAScript的全部保留字。

4.系统对话框

浏览器可以通过alert()、confirm()和rpompt()方法调用系统对话框向用户显示消息。系统对话框与浏览器中显示的网页没有关系,其不包含HTML和CSS,因此它们的外观由操作系统及浏览器设置决定。此外,这几个方法打开的对话框都是同步和静态的,换包话说,显示这些对话框时代码会停止执行,而关掉这些对话框后代码又会恢复执行。

1.alert()

alert()方法用于向用户显示一个警告对话框,其中包含指定的文本和一个“确定”按钮。此方法在前面已经使用过多次,这里只介绍注意要点,具体使用方法不再讲述。

  • 在单击对话框的“确定”按钮前, 不能进行任何其他操作。
  • 警告对话框通常可以用于调试程序 
  • alert()输出内容,可以是字符串或变量,与document.write()相似。

2.confirm() 

confirm()方法用于向用户显示一个消息对话框,该对话框可供用户进行选择,如“你好吗?”“你对吗?”等。其包含一个"确定"按钮和一个"消失"按钮,基本语法格式如下。

confirm(str);

在上述语法中,str表示在消息对话框中要显示的文本,其返回值是布尔类型,即当用户单击"确定”按钮时,返回true;当用户单击"取消"按钮时,返回false。

3.prompt() 

prompt()方法会弹出一个提示对话框,等待用户输入一些数据。其基本语法格式如下。

prompt("提示信息","输入框的默认信息");

在上述语法中,第一个参数显示在对话框上,通常是一些提示信息;第二个参数出现用户输入的文本框中,且被选中,作为默认值使用。如果省略第二个参数,则在提示对话框的输入文本框中会出现"undefined"。在使用时,可以将第二个参数的值设置为空字符串。

5. 程序调试

程序调试是JavaScript中的一个重要环节,在JavaScript中可以使用Chrome调试工具和alert()方法两种方式调试程序。

1.Chrome开发者工具

Chrome自带JavaScript调试工具,即Chrome开发者调试工具,具有强大的JavaScript调试功能,提供类似MyEclipse中的断点设置、变量监视等功能。使用方法是在浏览器中打开网页,按F12键进入调试界面。

Chrome开发者工具的常用模块有9个,每个模块及其主要功能如下。

  • Elements:用于查看和编辑当前页面中的HTML和CSS元素。
  • Console:用于显示脚本中所输出的调试信息,或运行测试脚本等。
  • Sources:用于查看和调试当前页面所加载的脚本的源文件。
  • Network:用于查看HTTP请求的详细信息,如请求头、响应头及返回内容等。
  • TimeLine:用于查看脚本执行时间、页面元素渲染时间等信息。
  • Profiles:用于查看CPU执行时间与内存占用等信息。
  • Resource:用于查看当前页面所请求的资源文件,如HTML、CSS样式文件等。
  • Security:用于调试当前页面的安全和认证等问题。
  • Audits:用于优化前端页面、提高网页加载速度等。

2.alert()方法 

可以通过alert()方法将不确定的数据以信息框的方式展示,以此来判断出现错误的位置。这里使用alert()方法调试。 

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

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

相关文章

使用阿里云服务器查看网站备案的方法和注意事项

随着互联网的发展&#xff0c;网站注册已成为在中国建设网站的必要步骤。 在使用阿里云服务器时&#xff0c;我们可以通过以下步骤查看网站注册状态。 备案概述&#xff1a; 在中国&#xff0c;互联网信息服务提供者必须进行登记&#xff0c;以监管互联网内容、规范市场运营和…

P1149 [NOIP2008 提高组] 火柴棒等式

题目描述 给你 &#xfffd;n 根火柴棍&#xff0c;你可以拼出多少个形如 &#xfffd;&#xfffd;&#xfffd;ABC 的等式&#xff1f;等式中的 &#xfffd;A、&#xfffd;B、&#xfffd;C 是用火柴棍拼出的整数&#xff08;若该数非零&#xff0c;则最高位不能是 00&…

C语言:字符串逆序输出, test ok

【问题描述】字符串逆序&#xff1a;设计函数功能是将一个字符串逆序&#xff0c;函数声明&#xff1a;void stringNx(char a[ ])&#xff0c;使用这个函数完成将输入的字符串逆序输出。 【输入形式】要求输入一个字符串 【输出形式】逆序后输出 【样例输入】abcd 【样例输…

美国将采取新政策降低对中国大陆的依赖 | 百能云芯

美国财政部长叶伦13日表示&#xff0c;美国正采取一系列行动来确保国内电动汽车产业的成功&#xff0c;并降低对中国大陆的依赖&#xff0c;这一做法虽然在一定程度上可以理解&#xff0c;但是也存在诸多值得深思的问题。 首先&#xff0c;我们必须承认中国在全球电动车市场的地…

SpringBoot项目根据配置文件初始化并向容器注册Bean

SpringBoot项目根据配置文件初始化并向容器注册Bean 文章目录 SpringBoot项目根据配置文件初始化并向容器注册Bean[TOC] 前言一、场景图示二、实现1.定义一个Condition实现类2.按照配置装配bean 总结 前言 在开发过程种有这种场景&#xff0c;我们在使用数据存储的时候定义了一…

Hadoop大数据应用:Linux 部署 HDFS 分布式集群

目录 一、实验 1.环境 2.Linux 部署 HDFS 分布式集群 3.Linux 使用 HDFS 文件系统 二、问题 1.ssh-copy-id 报错 2. 如何禁用ssh key 检测 3.HDFS有哪些配置文件 4.hadoop查看版本报错 5.启动集群报错 6.hadoop 的启动和停止命令 7.上传文件报错 8.HDFS 使用命令 一…

米尔更新面向工业产品的软件系统-基于瑞米派(Remi Pi)

米尔电子发布的瑞萨第一款MPU生态板卡——瑞米派&#xff08;Remi Pi&#xff09;自上市当天200套售罄&#xff0c;获得不少新老用户的青睐。为感谢大家的支持&#xff0c;米尔加推300套瑞米派活动&#xff0c;以补贴价回馈大家&#xff0c;抢完即止&#xff01; 不仅如此&…

上海亚商投顾:沪指震荡调整 飞行汽车概念股持续爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整&#xff0c;深成指走势稍强&#xff0c;创业板指一度涨超1%&#xff0c;黄白二线走势分化&a…

简单算命脚本

效果展示 文件内容 main.py文件 import json import random import time# 别挂配置数据 gua_data_path "data.json"# 别卦数据 gua_data_map {} fake_delay 10# 读取别卦数据 def init_gua_data(json_path):with open(gua_data_path, r, encodingutf8) as fp:gl…

centos7 install rocketmq 宿主机快速搭建RocketMQ单机开发环境

为什么采用宿主机而不采用 Docker 方式快速搭建 在搭建 RocketMQ 测试环境时&#xff0c;我们可以选择在宿主机上直接安装和配置&#xff0c;也可以使用 Docker 容器来快速搭建。然而&#xff0c;为什么我们选择了在宿主机上安装而不是使用 Docker 方式呢&#xff1f; 调整配置…

攻防世界-CatchCat

题目&#xff1a;附件为 分析题目&#xff0c;可知文件里面是一堆关于GPS的数据&#xff0c;所以我们将GPS的轨迹绘制出来&#xff08;GPS地图绘制网站&#xff1a;GPS Visualizer&#xff1a;从 GPS 数据文件绘制地图&#xff09; 将文件导入后绘制地图&#xff0c;得到如图&a…

【优选算法】专题1 -- 双指针 -- 移动零

前言: &#x1f4da;为了提高算法思维&#xff0c;我会时常更新这个优选算法的系列&#xff0c;这个专题是关于双指针的练习 &#x1f3af;个人主页&#xff1a;Dream_Chaser&#xff5e;-CSDN博客 一.移动零&#xff08;easy&#xff09; 描述&#xff1a; 「数组分两块」是⾮…

架构设计的核心目的与意义

以史为鉴&#xff0c;对我们了解架构设计的目的很有帮助。谈到架构设计&#xff0c;相信每个技术人员都是耳熟能详&#xff0c;但如果深入探讨一下&#xff0c;“为何要做架构设计&#xff1f;”或者“架构设计目的是什么&#xff1f;”类似的问题&#xff0c;大部分人可能从来…

单片机卡死的几大原因、分析、解决

阅读引言&#xff1a; 本文我想给大家分享一下我在学习过程中遇到的以及了解到的一些导致单片机运行卡死&#xff08;死锁&#xff09;的一些常见原因和解决办法&#xff0c; 请注意&#xff0c; 只是列举&#xff0c;并不是全部&#xff0c; 因为导致单片机运行卡死的原因无穷…

Qt-QPainter drawText方法不同重载之间的区别

QPainter类的drawText方法有如下重载&#xff1a; void drawText(const QPointF &position, const QString &text) void drawText(const QPoint &position, const QString &text) void drawText(int x, int y, const QString &text) void drawText(co…

APP在应用商店该如何做好节日营销

38妇女节刚刚过去&#xff0c;不少商家吃上了一波节日红利。 你有没有注意到很多App在应用商店里改头换面&#xff0c;开展了很多以“三八节”为主题的营销活动&#xff0c;并且取得了不错的成绩。 可见季节性营销策划对产品的下载量和用户留存率还是很重要的。 那么我们如何…

16.【CPP】详解继承

继承方式 如图 注意点 1.基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中&#xff0c;但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它 2.基类private成员在派生类中是不能被访问&#x…

电力物联网采集终端

电力物联网采集终端,通过采集设备数据&#xff0c;并将其传输到云端&#xff0c;实现精细管理和优化。 一、工作原理 电力物联网采集终端主要数据采集模块、通信模块等组成。采集设备的各项数据&#xff0c;如温度、湿度、电流等;数据采集模块将采集到的数据进行处理并存储;通…

索尼ILME-FX3摄像机RSV文件无法播放的修复方法

索尼摄像机rsv文件修复案例处理了很多&#xff0c;rsv是索尼mp4或者mxf文件封装失败时生成的临时文件&#xff0c;一般是由于断电或者摄像机意外重启导致的&#xff0c;下边来看下遇到rsv文件无法播放时的修复方法。 故障文件: 29.56G/rsv文件 故障现象: 摄像机型号为索尼IL…

【大模型API调用初尝试一】智谱AI 通义千问

大模型API调用初尝试一 调用大模型API能干什么智谱AI大模型API调用的过程获取API_KEYGLM_4同步调用GLM_4异步调用文生图大模型API调用 阿里云通义千问API调用过程单轮会话多轮会话 调用大模型API能干什么 大模型的参数非常庞大&#xff0c;功能非常强大&#xff0c;但是训练成…