简介:JavaScript用于网页和用户之间的交互断。 完整的javascript由语言基础,BOM和DOM组成的。
注释: 单行注释 // ; 多行注释 /**/
基本数据类型: undefined,Boolean,Number,String,null
undefined:只声明,未赋值; Boolean:布尔型;Number:数字型;String:字符串;
类型转换:Number,Boolean还是String都有一个to String方法,用于转换为字符串
1)转为字符串类型:String(变量);变量.toString();利用加号拼接字符串的方法实现转换效果;
2)转为数字类型: parseInt();parseFloat();Number(变量);利用算术运算符转换(隐式转换)
3)转为布尔型:使用内置函数Boolean() 转换为Boolean值
当转换字符串时:非空即为true
当转换数字时:非0即为true
当转换对象时:非null即为true
运算符:算术运算符;逻辑运算符;比较运算符;逻辑运算符;赋值运算符
循环语句:if语句:if else else if swich
for循环:for ; while ;do...while;for each;continue;break
事件:even
对象:JavaScript中常见的对象有数字Number,字符串String,日期Date,数组Array等。
一、 数组
1.1 什么是数组
数组是指的数据的有序列表。
数组中每个值称之为数组的一个元素。
数组中的每个元素都有一个位置,这个位置称之为索引(下标、index)。数组的索引是从 0 开始的
同一个数组中,元素的类型不做任何限制。也就是说,同一个数组中可以方法Number、String、Boolean、Object对象等等。可以同时放入任何的类型。甚至数组中的元素可以是另外一个数组(构成多维数组)。
1.2 JavaScript中数组的特点
虽然每种语言都有数组这种数据结构,但是JavaScript的数组相比他们有很大不同。
数组长度可以动态改变。
同一个数组中可以存储不同的数据类型。
数据的有序集合
每个数组都有一个length属性,表示的是数组中元素的个数
二、数组的创建
数组有两种基本创建方式:字面量方式和构造函数
1 字面量的方式
数组字面量: 所有的元素用方括号括起来,不同的元素之间用逗号分隔。
创建一个长度为 3 的数组,并初始化了3 个元素:"abc" "b" "d"
var colors = ["abc", "b", "d"];
创建一个长度为 0 的空数组数组。里面一个值都没有
var colors = [];
不要在最后一个元素的后面添加逗号,添加逗号虽然语法没有问题,但是在不同的浏览器可能得到不同的结果
var colors = [5, 6, 7,]; //这样数组的长度可能为 3 也可能为 4。在不同浏览器会得到不同的结果应
2 构造函数的方式
构造函数在创建对象的时候使用。数组的构造函数式 Array()
new Array(数组长度);创建一个长度为 0 的空数组
var colors = new Array();
//创建一个长度为 5 的数组。每个数组的元素的默认值是 undefined。
var colors = new Array(5);
//创建一个长度为 3 的数组,并且3个元素分别是 "blue" "red" "green"
var colors = new Array("blue", "red", "green");
注意:使用构造函数创建数组对象的时候,最后一个元素后面不要添加括号,否则报错。 这样是错误的:new Array("a", )
使用构造函数如果只传入了一个Number值,则这个值必须 >= 0, 否则会报错。
使用构造函数创建数组对象的时候,new 关键字是可以省略的。 例如:Array(5) 这样是可以的。
三、访问和修改数组中的元素
利用索引访问数组中的元素。如果数组的长度为 5,那么数组的索引为 0,1,2,3,4
创建一个长度为 5 的数据
var arr = [10, 20, 60, 5, 7];
alert(arr[0]); //获取下标为 0 的元素, 即:10
alert(arr[2]); //获取下标为 2 的元素, 即:60
arr[1] = 100; //把下标为 1 的元素赋值为100。
四、数组的长度
4.1 获取数组的长度
每个数组都有一个叫 length的属性,表示数组的长度(即:元素的个数)。
var arr = [10, 20, 60, 5, 7];
alert(arr.length); //弹出:5
4.2 修改数组的长度
JavaScript是一种弱类型的动态语言,数组的长度可以在程序运行期间根据需要进行动态的更改
==数组length属性不是只读,而是可以修改的。==
通过设置length的值直接修改数组的长度到指定的数值。
var arr = ["a", 8, "bc"]; //数组的长度为 3
arr.length = 6; // 修改数组的长度为 6
alert(arr.length); //数组的长度已经被修改为了 6 ,所以此处输出6.
下标为 3, 4, 5 的元素的值为undefined的。
alert(arr[3]); //弹出:undefined的。
arr.length = 2; // 修改数组的长度为 2 ,则下标为 >= 的元素被自动从数组移除。
通过给最后一个元素赋值来动态修改元素的长度。
var arr = [4, 6, 8];
给下标为 10 的元素赋值为 100. 由于最初长度为 3 ,这个赋值操作完成后,数组的长度会自动增长为11
arr[10] = 100;
alert(arr.length); // 弹出:11
没有赋值的元素默认都为 undefined
alert(arr[5]); //弹出:undefined
alert(arr[20]); //弹出: undefined
alert(arr.length); // 长度仍然为11. 上一行代码仅仅去访问元素,而没有赋值操作,则不会引起数组长度的变化
五、数组的遍历
一般有3种方法遍历数组:
for循环
for… in
for each
5.1 使用普通for循环遍历数组
var arr = [50, 20, 10, 5, 15, 6];
for(var i = 0; i < arr.length; i++){ //数组长度多长,就遍历多少次。 循环变量作为数组的下标
console.log(arr[i]);
}
5.2 使用 for…in 循环遍历数组
for-in 语句是一种精准的迭代语句,可以用来枚举对象的属性和数组的元素。
5.3 使用for …each遍历数组
调用数组的forEach方法,传入一个匿名函数
六、 数组常用方法
6.1 转换方法
toString()转换方法:
返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串
<script type="text/javascript">
var arr = [50, 20, 10, 5, 15, 6];
alert(arr.toString()); // 50,20,10,5,15,6
alert(arr); // 50,20,10,5,15,6 当把一个对象直接给alert,则会调用这个对象的toString方法,然后再输出。
join() 方法:
toString() 方法只能使用逗号连接,而 join() 方法可以使用指定的连接符连接
函数
函数的概念:
在js里面,可能会定义非常多的相同的代码或者功能相似的代码,这些代码可能需要大量重复使用。虽然for循环语句也能够实现一些简单的重复操作,但是也有局限性,此时我们可以使用js中的函数
函数:就是封装了一段可以被重复执行调用的代码块, 目的:就是让大量代码重复使用
函数的使用分为两步:先是声明一个函数 再接着是调用函数
1.声明函数
function 函数名() {
函数体
}
1.函数是做什么用的:他的最大的目的是大量代码可以重复使用,这是他最终的目的,函数就是封装了一个可以被重复调用执行的代码块,这是函数
2.声明函数使用什么关键字:function
3.如何调用函数 函数名()
4.封装是什么意思:简单理解封装就是打包,把咱们的函数整合成一个
1、调用函数
①用点击事件去执行 onclick;
②直接在script中调用
作用域
1. Javascript作用域: 就是代码名字( 经常使用变量) 在某个范围内起作用和效果 目的是为了提高程序的可靠性更重要的是减少命名冲突
2. js的作用域(ES6) 之前分为两种: 全局作用域 局部作用域 ECMAscript
3. 全局作用域: 在整个script标签中 或者是一个单独的js文件
4.局部作用域(又称为函数作用域)在函数内部就是局部作用域 这个代码的名字只在函数内部起效果和作用。
变量的作用域:根据作用域的不同我们的变量可以分为全局变量和局部变量
1.全局变量:在全局作用域下的变量称为全局变量,在全局下都可以使用
注意:如果在函数内部没有声明直接赋值的变量也属于全局变量
2.局部变量:在局部作用域下的变量 或者在函数内部的变量就是局部变量
注意:函数的形参aru也可以看做是局部变量
3.Javascript没有块级作用域
Javascript的作用域:全局作用域 局部作用域 现阶段我们javascript没有块级作用域
我们的JavaScript也就是在es6的时候新增了块级作用域
块级作用域 比如花括号{} if{} for{}
4.作用域链:内部函数访问外部函数的变量,采取的是链式查找的方式决定取哪个值 这种结 构我们称为作用域链 就近原则
DOM
DOM介绍
文档对象模型(Document Object Model,简称DOM),是 [W3C]组织推荐的处理可扩展标记语言
W3C 已经定义了一系列的 DOM 接口,通过这些 DOM 接口可以改变网页的内容、结构和样式。
/DOM是W3C组织制定的一套处理html和xml文档的规范,所有的浏览器都遵循了这套标准。
可以理解为是一套操作文档的工具箱,通过它可以方便的操作文档。
DOM树
DOM树 又称为文档树模型,把文档映射成树形结构,
通过节点对象对其处理,处理的结果可以加入到当前的页面。
几个专有名词 文档 节点 元素
文档:一个页面就是一个文档,DOM中使用document表示
节点:网页中的所有内容,在文档树中都是节点(标签节点、属性节点、文本节点、注释节点)node
元素:网页中的所有标签,通常称为元素节点,又简称为“元素”,使用element表示 标签节点又叫做标签元素
新增获取元素的三种方法
1. getElementsByClassName('选择器') 根据类名获取某些元素集合 选择器前面不用加符号。
2. querySelector('.box') 返回指定选择器的第一个元素对象 切记 里面的选择器需要加符号。
3.querySelectorAll() 返回指定选择器的所有元素对象集合。