本文是JavaScript的用途介绍,以及语法规则(用法),方便后续查阅;
用途:
JavaScript是为实现动态页面而出现的技术,主要功能也是修改HTML页面内容。
语法规则:
引入方式:
1.超链接方式: 运行JavaScript
2. 内嵌方式:<script type="text/javascript>
alert(“直接运行的JavaScript!”);
3. 外联方式:
<script…>标签属性;
defer: 整个页面加载完毕再执行script即js脚本(该元素推迟了脚本执行,无论脚本位置都放最后执行,避免位置不同执行结果的差异);
async:异步执行脚本(浏览器来启动新线程来异步执行<script…/>元素导入的脚本文件,不影响解析<script…>元素后的页面内容)
<noscript.>标签(又称为元素):
向不支持JavaScript或禁用JavaScript的浏览器显示提示信息,无任何属性;
数据类型和变量(任何语言都需要),只是定义与使用方式不同:
在JavaScript中,有“隐式定义”(直接赋值)和“显示定义”(var关键字定义变量)
类型转换:
自动类型转换,但是可读性差,一般选择JavaScript提供的函数来强制类型转换:
toString():将布尔值、数值等转换成字符串;
parseInt():将字符串、布尔值等转换成整数;
parseFloat():将字符串、布尔值等转换成浮点数;
变量的作用域也有全局变量和局部变量:
全局范围内定义的变量就是全局变量,函数内定义的变量称为局部变量;
函数内局部变量覆盖全局变量。
var:是否使用var定义变量的区别:var定义变量,程序回强制定义一个新变量,而不使用var,后面使用已定义的同名变量,可能就是对已有全局变量的赋值。
函数内变量声明会提升到函数体的顶部(不论其实际的位置),只是提升其变量声明部分,其赋值部分不会提升。
let变量的使用~~删除线格式~~
const定义常量,必须定义时指定初始值,不可改变;
包含的基本数据类型:数值类型、布尔类型、字符串类型、undefined类型、null类型;
其字符串类型必须用引号括起来(单双引号都可以),JavaScript以String内建类来表示字符串,包含以下基本方法和属性来操作字符串:
String() charAt() charCodeAt() length() toUpperCase() toLowerCase() fromCharCode() indexOf() lastIndexOf() substring() slice() match() search() concat() split() replace()
正则表达式就是一种特殊的字符串,允许使用通配符,表达式必须在两条斜线之间;
复合类型(多个基本类型或复合类型组成的数据体):
Object对象 Array数组 Function函数
JavaScript是基于对象的脚本语言,提供了大量的内置对象:
Array Date Error Function Math Number Object String
Array
-
数组作为栈时两个方法:
push(ele):元素入栈,返回入栈后数组的长度;
pop():元素出栈,返回出栈的数组元素; -
数组作为队列时的两个方法
unshift(ele):元素入队列,返回入队列后数组的长度;
shift():元素出队列,返回出队列的数组元素; -
concat(value,…):为数组添加元素,返回追加元素后的数组,但员数组不变;
-
join([separator]):将数组的多个元素拼接,组成字符串后返回;
-
reverse():反转数组包含的元素;
-
slice(start,[end]):截取数组在start索引和end索引之间的子数组,原数组不改变。
-
sort(sortfunction):对数组元素排序
-
splice(start,deleteCount,value,…):截取数组从start开始、deleteCount个元素,再将多个value值追加到原数组中,返回被截取部分组成的新数组;
函数、运算符、语句(包括异常语句)、流程控制等的定义不再介绍(与java大差不差);
函数是JavaScript的一等公民,定义一个函数后得到4项:
-
函数 像java方法一样,该函数(方法)可以被调用
- 对象 系统会同时创建一个对象,是Function类的实例;
- 方法 该函数通常会附加给某个对象,作为该对象的方法;
- 变量 定义函数的同时,也得到一个变量;
- 类 也得到一个与函数同名的类;
函数调用方式:
- 直接调用;
- new 关键字调用;
- call()方法或apply()方法调用
调用者.函数(参数1,参数2…) = 函数.call(调用者,参数1,参数2…)
创建对象方式:
- new关键字调用构造器(就是new关键字函数调用)
- Object直接创建对象(也是new)
- JSON语法创建对象
箭头函数
相当于其他语言的Lambda表达式或闭包语法,是普通函数的简化写法
(param1,param2,…,paramN) => {statements}
相当于如下函数:
function(param1,param2,…,paramN){
statements
}
函数的参数处理
基本类型 参数采用值传递方式(传入实参的副本);
复合类型 参数实际采用的也是值传递方式,但是其副本和原变量指向同一个JavaScript对象,实际上修改了同一个对象,所以似乎是“引用传递”;
闭包:
扩大函数的局部变量的作用域,使得局部变量一直存货到函数之外的地方;这种现象就是闭包;
为了避免这种情况,通常不建议直接在函数定义(类定义)直接为该函数定义方法(内函数),建议使用prototype属性(所有JavaScript的类都有一个prototype属性),是对原有类的扩展(原有类就不存在了)。