目录
5.1 JS基础语法(javascript,script脚本)
5.2 JS引入
5.1 JS基础语法(javascript,script脚本)
1.输入输出语句 | alert(msg) | console.log(msg) | prompt(info) | 2.基本介绍 | JS脚本语言:运行在客户端的脚本语言,实现业务逻辑和页面控制。 浏览器怎么运行JS: 浏览器由七个模块组成:用户界面,浏览器引擎,渲染引擎,网络,JS解释器,UI后端,数据持久化存储。 渲染引擎:用来解析HTML和CSS,俗称内核,如chrome浏览器的blink,老版本的weblink. JS引擎(JS解释器):读取网页中的javascript代码,对其处理后运行,如chrome浏览器的v8。 | 3.JS的组成 | ECMAscript | DOM:页面文档对象模型 | BOM:浏览器对象模型 | 4.变量 | 基本介绍:用于存放数据的容器。 | 变量的使用 | 变量命名规范 | 5.数据类型 | 8种数据类型 | 基本数据类型(值类型) | number,string,boolean,undefined,null,beglnt,symbol | 引用类型?(对象object) | 获取变量数据类型 | typeof检测变量的数据类型,返回一个字符串。 | 注:字面量是常量,值是固定的,在程序运行中不可更改。 | 数据类型转换 | 转为字符串 | 转为数字型(重点) | 转为布尔型 | 6.运算符 | 算术运算符 | 递增递减运算符 | 比较运算符 | 逻辑运算符 | 赋值运算符 | 7.流程控制 | 顺序结构 | 分支结构 | 三元表达式 | switch语句 | 8.循环 | for循环 | while循环 | do-while循环 | continue,break | 9.数组 | 创建数组 | new创建数组 | 数组字面量创建数组 | 获取数组元素 | 遍历数组 | 数组中新增元素 | 10.函数 | 函数的使用 | 声明函数 | 调用函数 | 函数的参数 | 函数的返回值:return语句 | arguments的使用 | 函数的声明方式 | 自定义函数方式(命名函数) | 函数表达式方式(匿名函数) | 11.作用域 | 全局作用域:作用于所有代码的执行环境(整个script标签内部)或一个独立的js文件 | 局部作用域:作用于函数内的代码环境,与函数有关。 | 块级作用域:块作用域由{}包括(es6) | 变量作用域的分类 | 全局变量:在代码任何地方都可以使用,关闭浏览器才会被销毁,比较占内存 | 局部变量:函数内部使用,所在代码块被执行时才进行初始化,代码块运行结束被销毁,更节省内存空间。 | 作用域链:采用就近原则来查找变量的最终的值。 | 12.预解析 | 变量预解析 (变量提升) | 变量提升:变量的声明被提升到当前作用域的最上面,赋值不会提升。 | 函数预解析 (函数提升) | 函数提升:函数的声明被提升到当前作用域的最上面,不会调用函数。 | 13.对象 | 创建对象 | 字面量创建 | new object创建 | 构造函数创建 | new关键字 | new在执行时会做: 1.在内存中创建一个新的空对象。 2.让this指向这个空对象。 3.执行构造函数中的代码,给新对象添加属性和方法。 4.返回这个新对象。(构造函数中不需要return) | 遍历对象属性 | for...in语句用于对数组或对象的属性进行循环操作。 | for (变量 in 对象名) {//在此执行代码} | 14.内置对象 | Math对象 | 不是构造函数,有数学函数和常数的属性和方法。 Math.PI //圆周率;floor() //向下取整;ceil() //向上取整; round() //四舍五入;abs() //绝对值;max(),min() //最大最小值。 | 日期对象 | 是构造函数,需要实例化后才能使用,Date实例用来处理日期和时间。 | 数组对象 | 创建数组对象的两种方式: 1.字面量方式。 2.new array() | 检测是否为数组: instanceof 运算符,判断对象所属的类型、 Array.isArray()判断一个对象是否为数组,isArray()是HTML5中提供的方法。 | 字符串对象 | 基本包装类型:把简单的数据类型包装成复杂的,使基本数据类型有属性和方法。 | 字符串的不可变:里面的值不可变,看上去可以改变内容,但其实地址改变,新开辟一个内存空间。 | 根据字符返回位置:操作完成,会返回一个新的字符串。 | 根据位置返回字符 | 字符串操作方法 | replace()方法:replace(被替换的字符串,目标字符串); | split()方法:切分字符串,将字符串切分为数组。 |
javascript是一种脚本语言,主要功能是修改html页面内容,包括创建,删除html页面元素,内容,外观,位置,大小等。
<!DOCTYPE html>
<html>
?????<body>
?????<script type="text/javascript">
?????</script>
?????</body>
</html>
4. 变量:javascript是弱脚本语言,使用变量前可以无需定义。javascript支持两种方式引入变量:1.隐式定义(直接给变量赋值)2.显示定义(使用var关键字定义变量)。
5.数据类型:基本数据类型有5种:
数值类型:包含整数和浮点数。
布尔类型:只有true和false,用于逻辑判断。
字符串类型:字符串变量必须用(),引号可以是单引号,也可以是双引号。
undefined类型:用来确定已经创建但没有初值的变量。表示某个变量不存在或没有分配值,也可表示对象的属性不存在。
null类型:表达某个变量的值为空。
复合类型有3种:
Object:对象:一系列命名变量(属性),函数(方法)的集合。
Array:数组
Function:函数
Javascript是基于对象的脚本语言,提供了大量的内置对象供用户使用,其中常见的内置类有:
array | date | error | function | math | number | object | string | 数组类 | 日期类 | 错误类 | 函数类 | 数学类 | 树值类 | 对象类 | 字符串类 |
9.数组:数组是一系列的变量。
数组的定义方式:
var a = [3, 5, 20]; // 定义的时候初始化数组
var b = []; // 创建一个空数组
var c = new Array(); // 创建一个空数组
数组长度可变,数组长度=所有元素索引最大值+1;同一数组中元素类型可以互不相同;访问数组元素时不会产生数组越界,访问未赋值的数组元素时,该元素的值为undefined。
- 函数:先对参数类型进行判断,用typeof运算符判断变量的数据类型。
定义函数的三种方式 | 定义命名函数 | function functionName(parameter-list) { ????statements } | 函数最大作用是提供代码复用,所以应该将需要重复使用的代码块定义成为函数,提供更好的代码复用。函数可以有返回值也可以没有返回值,函数的返回值使用return语句返回,在函数的运行过程中,一旦遇到了第一条return语句,函数就返回返回值,函数运行结束。 | 定义匿名函数 | function(parameter list) { ????statements }; | 无须指定函数名,而是将参数列表紧跟function关键字。实际上是定义一个函数对象(即Function实例),可以将这个对象赋给另一个变量,通过变量来执行调用函数。但可读性差。 | 函数 | 可以被调用,javascript的函数是一个函数,也是一个类。 | this关键字,被this所修饰的变量不再是局部变量,它是该函数的实例属性。 | 对象 | 定义一个函数时,系统会创建一个对象,该对象是function类的实例。 | this.info = function() // 为info创建一个匿名函数 | 方法 | 定义一个函数时,该函数通常会附加给某个对象,作为该对象的方法。 | | 类 | 在定义函数的同时,也得到了一个和函数同名的类 | 在调用函数时使用new关键字,可以返回一个Object,这个Object不是函数的返回值,而是函数本身产生的对象。 | 根据函数中声明变量的方式,函数中的变量有3种: | 局部变量 | 在函数中以普通方式声明的变量,包括以var或者不加任何前缀声明的变量 | 实例属性 | 在函数中以this前缀修饰变量 | 类属性 | 在函数中以函数名为前缀修饰变量 | 函数调用的三种方式: | 直接调用函数 | 不灵活 | 以call()方式 | call()方法的语法格式如下: 函数引用.函数(调用者,参数1,参数2...),如:fn.call(null, index, array[index]) 直接调用函数与通过call()方法调用函数的关系: 调用者.函数(参数1,参数2...) = 函数.call(调用者,参数1,参数2...) | 通过call()调用函数时,必须在括号中详细的列出每个参数 | apply()方式 | myfun.apply(this, arguments); | 通过apply()动态地调用函数时,可以在括号中以arguments来代表所有参数。 | 函数的参数 | 基本类型参数 | 对于基本类型参数,JavaScript采用值传递的方式,当通过实参调用函数时,传入函数里的并不是实参本身,而是实参的副本,因此在函数中修改参数值并不会对实参有任何影响。 | var x = 10; change(x); console.log(x); //10 | 复合类型的参数 | 值传递的方式 | 空参数 | 函数声明中包含一个参数,但调用时并没有传入任何参数,这种情况对于强类型语言(Java,C)是绝对不允许的,但JavaScript会将没有传入实参的参数值自动设置为undefined。 | 由于JavaScript调用函数时对传入的实参并没有要求,即使定义函数时声明了多个形参,调用函数时也并不强制要求传入相匹配的实参。因此JavaScript没有所谓的函数“重载”,对于JavaScript而言函数名就是唯一的标识 |
- 运算符:
算术运算符 | 加法 | var sum = a + b; | 乘法 | var sub = a * b; | 减法 | var sub = a - b; | 除法 | var sub = a / b; | 取余 | var sub = a % b; | | | 自加(++) | var sum = b++ + a; ? console.log(sum); //15 | 自减(--) | var sum = --b + a;//a=5,b=10 console.log(sum); // 14 | var sum = ++b + a; console.log(sum); // 16 | var sum = b-- + a; console.log(sum); // 15 |
位运算符:
& | | | ~ | ^ | << | >> | >>> | 与 | 或 | 非 | 异或 | 左移 | 右移 | 无符号右移 |
比较运算符:
> | >= | < | <= | == | != | === | !== | | | | | 等于 | 不等于 | 严格等于 | 严格不等于 |
逻辑运算符:
三目运算符:(A) ? B : C; ?A的值为true,返回B语句,A为false,返回C语句。
异常捕获:
1)JavaScript只有一个异常类,Error,无须在定义函数时声明抛出该异常,所以没有throw关键字
2)JavaScript是弱类型语言,所以catch语句后括号里的异常实例无须声明类型
3)JavaScript只有一个异常类,所以try块最多只能有一个catch块
4)获取异常的描述信息是通过异常对象message属性,而不是通过getMessage()方法实现。
With语句:作用是避免重复书写同一个对象。
with(object)
{
????statements
} ?????//只有一行语句时,花括号可以省略。
7.流程控制:有基本分支语句if,if-else,循环语句for,while,for...in等。
分支语句 | if语句 | // 形式1 if (expression) { ??statement } //statement只有一行代码时,省略花括号 | // 形式2 if (expression) { ????statement } else { ????statement } | if (expression) { ????statement } else if (expression) { ????statement ? } else { ????statement } | switch语句 | switch (expression) { ????case condition 1: statemnt ??break; ????case condition 2: statemnt ??break; ????default: statemnt } | 循环语句 | while语句(先判断循环条件,条件为真 执行循环体) | while (expression) { ????statement } //当表达式的值为true时,执行循环体,false则结束循环。无false时会造成死循环。 | do-while语句 | do { ??statement } while (expression) //先执行循环体,然后判断循环条件,如果条件为真,则执行下一次循环。否则中止循环。 | for循环 | for (var i = 0; i < Things.length; i++) { ??} ?(初始化;判断是否执行下一次循环;循环结束后执行语句) | for in循环 | for (index in object) { ????statement } //for in循环的本质是一种foreach循环,它主要有两个作用: 1)遍历数组里的所有数组元素。当遍历数组时,for in 循环的循环计数器是数组元素的索引值 2)遍历JavaScript对象的所有属性 | 中止循环语句 | break语句 | break则是完全中止整个循环,开始执行循环体后面的语句。 | continue语句 | continue只是中止本次循环,接着开始下一次循环, |
5.2 JS引入
页面引入JS的方法:
- 在页面直接写入<script type=”text/javascript”>JS代码</script>
- 在页面中引入外部文件<script src=”xx.js”></script>
在页面中直接写入<script type="text/javascript">js代码</script>。 | 在页面中引入外部文件<script src="xx.js"></script>。 | 在js中引入外部js,通过document.wirite("scr"+"ipt src='xx.js'></scr"+"ipt">。 | 在js中引用其他js片段,document.write("<scr"+"ipt>alert(xxx)</scr"+"ipt>")。 | 通过DOM添加:var scr=document.createElement("script"); scr.src="xxx.js"; |
|