前端开发(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 关键字声明的变量
  1. 实例变量:在函数中以 this 关键字修饰的变量,比如上面的例子就是
  1. 类属性:在函数中以函数名(类名)作为前缀修饰的变量(类似于 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 对象组成的数组

相关推荐
啃火龙果的兔子1 小时前
解决 Node.js 托管 React 静态资源的跨域问题
前端·react.js·前端框架
ttyyttemo1 小时前
Compose生命周期---Lifecycle of composables
前端
以身入局1 小时前
FragmentManager 之 addToBackStack 作用
前端·面试
sophie旭1 小时前
《深入浅出react》总结之 10.7 scheduler 异步调度原理
前端·react.js·源码
练习前端两年半1 小时前
Vue3 源码深度剖析:有状态组件的渲染机制与生命周期实现
前端·vue.js
大胖猫L1 小时前
深搜与广搜在 TypeScript 类型递归中的应用
前端·算法
吃饭睡觉打豆豆嘛1 小时前
彻底搞懂前端路由:从 Hash 到 History 的演进与实践
前端·javascript
蛋仔聊测试1 小时前
基于 Playwright(python) 的前端性能测试脚本实现
前端·python
算了吧1 小时前
基于vue3和koa2打造的一款企业级应用框架(建设中)-Elpis
前端·前端框架
用户75828121830731 小时前
什么是Koa框架?
前端