当前位置: 首页 > news >正文

前端开发(HTML,CSS,VUE,JS)从入门到精通!第三天(JavaScript)

一、JavaScript简介

1.JavaScript 是一种脚本语言

由 LiveScript 改名而来,JavaScript 和 Java 没有任何关系,主要是为了利用 Java 的知名度所以改成 JavaScript。JavaScript 是一种基于客户端浏览器,基于对象,基于驱动的脚本语言,和所有脚本语言一致,JavaScript 是解释执行的。

二、JavaScript 主要用于 HTML 页面中,在页面中使用 JavaScript 主要有如下三种方式:

1.在 HTML 标签中使用 URL 地址的地方使用javascript:”javascript代码”的方式,例如:

<a href="javascript:alert('js代码');">点我</a>

2.在 HTML 页面的 <head> 或 <body> 标签中的任意位置使用 <script> 标签来编写 JavaScript 代码

示例:

3.通过 script 标签引入外部的 .js 文件,同样该 script 标签可以用在<head>或<body>中

三、数据类型和变量

1.变量:

在程序执行期间可能发生变化的量,JavaScript 是弱语言类型,同一个变量可以存储不同类型的数据,JavaScript不会严格去区分数据类型,声明变量的方式有两种:

(1)隐式定义:

直接给变量赋值,这种方式定义的变量是全局变量

(2)显式定义:

统一通过 var 关键字定义,注意,JavaScript 是弱语言类型,在JavaScript中定义任意类型的变量统一使用var关键字,不会严格去区分数据类型。

示例:

(3)局部变量和全局变量:

声明在函数内部的变量称为局部变量,不在函数内部的变量称为全局变量,全局变量被所有函数所共享,如果局部变量和全局变量同名,局部变量会覆盖全局变量。

2.基本数据类型

(1)JavaScript 的值保存在内存中时,也是有数据类型的,它的数据类型有以下几种:

① 数值类型:包含整数和浮点数

② 布尔类型:只有 true和 false 两个值

③ 字符串类型:必须使用单引号或双引号括起来

④ undefined 类型:定义一个变量没有给它赋初值,就是 undefined。

⑤ null 类型:表明某个变量(对象)的值为空

1)数值类型和布尔类型和 Java 都类似,我们就不讲了

示例1:JavaScript 允许除 0 操作,除数和被除数都可以是 0,得到的结果是 NaN(Not a Number),整数除以 0 得到正无穷大 Infinity,负数除以0 得到负无穷大-Infinity。

NaN 表示 Not a Number,即非数的意思,0 除以 0 得到的结果就是NaN,如果算术运算表达式中有一个 NaN 的变量,那么整个算术表达式的值就是 NaN,JavaScript 提供了一个函数 isNaN(x) 来判断某个变量的值是否是NaN,例如:

2)字符串类型:

字符串用单引号或双引号括起来,而且不会去区分单个字符还是字符串,所有的字符都当成字符串来处理,这个和Java 不一样。

a. JavaScript 的字符串都是以 String 这个内建类来表示,这个内建类 String 常用的方法:

        a) String():String 的构造函数,可以构造一个字符串

        b) charAt():获取某个索引对应的字符

        c) charCodeAt():返回指定索引位置的字符对应的Unicode编码值

        d) length:字符串长度

        e) toUpperCase():转大写

        f) toLowerCase():转小写

        g) indexOf():返回字符串首次出现的位置

        h) lastIndexOf():返回字符串最后一次出现的位置

        i) substring():截取子字符串

        j) slice():截取子字符串,功能比 substring 强大,支持负的参数

        k) match():匹配正则表达式

        l) search():使用正则搜索

        m) split():通过指定分隔符,将字符串分隔为字符数组

        n) replace():将字符串中某个子串以特定的字符串替换。

示例:

3)布尔类型:取值只有 true 和 false 两种

var b = true;

4)undefined 和 null

如果一个变量没有赋初值,那么它的值就是 undefined,定义一个对象可以赋值 null,表示为 null。

示例:

5)类型转换:

两个变量进行减法运算,那么会发生类型转换,如果拿一个字符串加上一个变量,就成了字符串拼接。

示例:

a. JavaScript 还提供了如下几个函数来进行强制类型转换

        a) toString():将布尔值,数值转换为字符串

        b) parseInt():将字符串,布尔值转换为整数

        c) parseFloat():将字符串,布尔值转换为浮点数

示例:

注意:使用 parseInt() 或 parseFloat() 将各种类型转换为数字类型时,如果字符串是一个数字字符串,则可以转换,否则就会得到 NaN,其中 undefined,null,布尔值 以及其他对象通过上面的方法转换后都会得到NaN,例如:

四、复合类型

1.复合类型是由多个基本数据类型(也可以是复合类型)组成的数据体,JavaScript主要包含如下复合类型:

(1)Object 对象

(2)Array 数组

(3)Function 函数

2.对象

(1)JavaScript 也是一门面向对象的语言,但是不是纯的面向对象语言,JavaScript 是基于对象的脚本语言,其内部提供了大量的内置对象给用户使用,除了 Object 对象之外,还有如下对象

① Array:数组类

② Date:日期类

③ Error:错误类

④ Function:函数类

⑤ Math:数学类

⑥ Number:数值类

⑦ Object:自定义对象类

⑧ String:字符串类

(2)数组对象:

JavaScript 的数组对象和其他强语言类型不同,JavaScript 中的数组元素类型可以不同,定义数组有多种方式。

示例:

示例2:声明数组,并赋值

示例3:使用 Array 内建类来创建数组

使用数组的总结:

JavaScript 中的数组长度可变,通过 length 表示数组的长度,同一个数组中的元素类型可以不一致,访问数组的时候不会出现数组越界的问题,如果访问的元素不存在,则返回 undefined,而不会抛出异常,例如:

示例3:其他常用内建类

3.函数:

JavaScript 中的函数可以将一个功能封装到函数中,以便复用代码,函数的语法:

注意:JavaScript 中的函数的形式参数不能使用 var 关键字声明,返回值也不能加 var 关键字,因为 JavaScrip t是弱语言类型。

调用函数的语法:

var res = 函数名(实际参数1,实际参数2,...);

示例:

4.typeof 和 instanceof 运算符

(1)typeof 运算符用于判断某个变量的数据类型,既可以当成函数使用,即 typeof(a),也可以当成运算符使用,即 typeof a,对于不同的数据类型,typeof 运算符返回的类型不一样,例如:

undefined 值:undefined

null 值:object

布尔值:boolean

数值:number

字符串:string

对象:object

函数:function

示例:

(2)instanceof 运算符:判断某个变量是否是某个类的实例,是返回 true,不是返回 false。

示例:

5.JavaScript中的语句

(1)顺序执行语句:

        var a = 10;

        var b = a + 20;

        document.write(b);

(2)空语句

        ;//空语句

(3)异常抛出语句

        throw new Error(错误描述字符串);

(4)异常捕获语句

        try{

        }catch(e){

        }finally{

        }

示例:

五、流程控制:if...else,switch...case,while 循环,do...while 循环,for 循环,break,continue 都和 Java 中类似,我们就不讲了

示例:打印九九乘法表

1.for in循环,和 Java 中的 foreach 类似,但是还是有一些区别

(1)语法:

        for(index in object){

        循环体

        }

说明:index:表示待遍历的数组的下标或对象的属性,object 是数组或对象

示例:

六、函数

1.定义函数的三种方式

(1)定义命名函数

(2)定义匿名函数

(3)使用 Function 类来定义函数

2.命名函数

        function 函数名(形参列表){

        函数体;

        [return 返回值;]

        }

3.匿名函数

        var 函数名 = function(形参列表){

        函数体;

        [return 返回值;]

        }

示例:

4.使用 Function 类声明函数

var 函数名 = new Function(param1,param2,...,statement);//调用 Function 类的构造函数来创建函数

说明:其中 param1,param2,... 为函数的形式参数,最后一个参数 statement 是函数的执行体

示例:

5.函数,方法,对象和类

(1)当使用 JavaScript 定义一个函数之后,实际上可以得到如下 4 项:

        1)函数:就像 Java 中的方法一样,可以被调用

        2)对象:定义函数时,系统也会创建一个对象,这个对象是 Function 类的实例

        3)方法:定义一个函数时,该函数通常都会附加给某个对象,作为某个对象的方法,默认情况下我们定义的函数都归属于 window 对象(同理,全局变量默认情况下也归属于window 对象作为属性)

示例:

4)类:在定义函数的同时,也会得到一个和函数同名的类

        JavaScript 的函数不仅仅是一个函数,更是一个类,我们在定义一个函数的同时,也得到了跟该函数同名的类,并且该函数也是这个类的唯一构造器,可以通过 new 关键字来调用该构造函数创建对象。

示例:

第一个是普通的函数调用,第二个是通过这个 test 类的唯一构造器创建了一个自定义的 Object 类的对象。

(2)this 关键字在函数中表示的意思:this 始终代表当前对象本身

示例:通过函数作为构造器来创建 Person 类

(3)函数的实例属性和类属性(类似于 Java 中的非 static 属性和 static 属性)

1)函数中的3种变量

1. 局部变量:在函数内部通过 var 关键字声明的变量

2. 实例变量:在函数中以 this 关键字修饰的变量,比如上面的例子就是

3. 类属性:在函数中以函数名(类名)作为前缀修饰的变量(类似于 Java 中的 static 类型的变量)

示例:

(4)函数参数的处理:

对于函数的参数,由于 JavaScript 是弱语言类型,不会去区分变量的类型,所以函数在使用参数的时候,应该使用 typeof 关键字去进行类型判断之后才使用,例如:

七、面向对象

1.JavaScript 并不是一个纯粹的面向对象的语言,不会像 Java一样通过创建类,然后通过 new 关键字调用类的构造函数来产生对象。

2.JavaScript 中没有 Java 这种严格的语法,JavaScript 中的每个函数都可用于创建对象,返回的对象就是该类的实例,也是 Object 类的实例

示例:

3.对象和关联数组:

JavaScript 中的对象的本质就是一个关联数组,需要访问对象属性时,既可以通过 obj.propName 访问,也可以通过 obj[propName] 访问,例如:

4.JavaScript 中创建对象的方法,大致有 3 种:

1. 使用 new 关键字调用函数作为构造器来创建对象,比如上面的代码

2. 使用 Object 内建类直接创建对象

3. 使用 JSON 语法创建对象

(1)使用函数作为构造器创建对象:见上面的例子

(2)使用 Object 内建类创建对象

示例:

(3)使用 JSON 创建对象

1) JSON(JavaScript Object Notation),JSON 语法提供了更简单的方式来创建对象,JSON创建对象语法:

var obj = {attr1:value1, attr2:value2,...fun:function(){...},...};

其中 attr1 , attr2, ...是 obj 对象的属性名,”:”后面的value1 , value2,... 是属性的值,fun 是obj 对象的方法名,“:” 后面是指向的匿名函数

示例:

示例2:JSON 数组:由 JSON 对象组成的数组

http://www.dtcms.com/a/311062.html

相关文章:

  • Python编程基础与实践:Python模块与包入门实践
  • MyBatisPlus之核心注解与配置
  • JP3-3-MyClub后台后端(三)
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘seaborn’问题
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频摘要生成与智能检索优化进阶(377)
  • 2025-08 安卓开发面试拷打记录(面试题)
  • rabbitmq消息队列详述
  • 关于echarts的性能优化考虑
  • Pytorch-02数据集和数据加载器的基本原理和基本操作
  • Unity_数据持久化_XML基础
  • 【C++】第二十一节—一文详解 | 红黑树实现(规则+效率+结构+插入+查找+验证)
  • 福彩双色球第2025088期篮球号码分析
  • 电脑手机热点方式通信(上)
  • StarRocks vs ClickHouse:2025 年 OLAP 引擎终极对比指南
  • Day25-对称二叉树-
  • 仿真电路:(十七下)DC-DC升压压电路原理简单仿真
  • Clickhouse#记录隐藏字段
  • 综合:单臂路由+三层交换技术+telnet配置+DHCP
  • 【云计算】云主机的亲和性策略(四):云主机组
  • C 语言问题
  • 【机器学习】两大线性分类算法:逻辑回归与线性判别分析:找到分界线的艺术
  • 复杂路况下漏检率↓78%!陌讯动态决策模型在井盖缺失检测的实战解析
  • 系统性学习数据结构-第一讲-算法复杂度
  • Agents-SDK智能体开发[5]之集成MCP进阶
  • 机器学习 —— 决策树
  • [硬件电路-114]:模拟电路 - 信号处理电路 - 放大器的种类与比较
  • Node.js 路由与中间件
  • [硬件电路-119]:模拟电路 - 信号处理电路 - 比较器,模拟电路中的“决策者”,模拟信号到数字电平逻辑信号的转化者...
  • 音视频学习(四十六):声音的三要素
  • 小迪23-28~31-js简单回顾