简介
组成
核心(ECMASript):提供核心语言功能
文档对象模型(DOM):提供访问和操作页面内容的方法和接口
浏览器对象模型(BOM):提供与浏览器交互的方法和接口
HTML中使用JS
1.<script>元素
属性:src,type
使用方法:1.直接在页面嵌入JavaScript代码;
2.包含外部JavaScript文件
* 代码中不能出现</script>字符串。可通过转义字符“\”解决
<script>
function sayScript(){
alert("<\/script>");
}
</script>
1.标签位置
a.<script>元素都在<head>元素中
缺点:只有全部JavaScript代码下载,解析,执行完之后才开始呈现页面内容
b.<script>元素在<body>元素内容之后
解决了a问题,解析完代码之前页面内容已呈现
2.延迟脚本
给<script>定义defer属性。
defer用途:表明脚本在执行时不会影响页面构造,即脚本会被延迟到整个页面都解析完后运行。立即下载,延迟执行
* defer属性只适用于外部脚本文件
* H5规定脚本按照顺序执行
<head>
<title>example</title>
<script defer="defer" src="exp1.js"></script>
<script defer="defer" src="exp2.js"></script>
</head>
3.异步脚本
给<script>定义async属性。
<head>
<title>example</title>
<script async src="exp1.js"></script>
<script async src="exp2.js"></script>
</head>
目的:不让页面等待两个脚本下载执行,从而异步加载页面其他内容。尽量不在加载期间修改DOM
* 只适用于外部脚本文件
* 脚本不一定按顺序执行
2.嵌入代码与外部文件
外部文件优点:
1.可维护性;2.可缓存;3.适应未来
基本概念
1.语法
(1)区分大小写
(2)标识符
变量,函数,属性名字,或函数参数
规则:由字母,下划线,美元符号和数字构成;
不能以数字开头
(3)注释
单行注释 / /
块级注释 /*...*/
(4)严格模式
脚本顶部添加"use strict";
2.关键字和保留字
3.变量
var 变量名;
* 严格模式下,不能定义名为eval或arguments
4.数据类型
基本数据类型:undefined,null,boolean,number,string
复杂数据类型:object
1.typeof操作符
用途:检测给定变量的数据类型
typeof(number);
* 如果值是对象或null,返回“object”
* typeof是一个操作符,不是函数。括号可以省略
2.undefined类型
var message;
alert(message==undefined);//true
var message=undefined;
alert(message==undefined);//true
3.null类型
var car=null;
alert(typeof car);//object
alert(null==undefined);//true
4.boolean类型
值:true,false(区分大小写)
* 可调用转型函数boolean()将一个值转化为对应boolean值
5.number类型
定义数组
var 数组名称=new Array();
Array里一个数代表数组的长度 多于一个长度由个数来决定
长度获取 length属性
join()
var a=new Array(1,2,3,4,5);
console.log(a);//[1,2,3,4,5]
console.log(a.join(","));//1,2,3,4,5
翻转 排序
var a=new Array(1,4,2,3,5);
console.log(a.reverse());//[5,3,2,4,1]
console.log(a.sort());//[1,2,3,4,5]
concat 将数组合并并返回结果
var a=new Array("a","b");
var b=new Array("c","d");
console.log(a.concat(b));//["a","b","c","d"]
indexOf() 单个参数的时 在字符串里面查找字符 找到返回当前的索引位置 没找到返回-1
var a="abcd";
console.log(a.indexOf("b"));//1
lastindexOf() 用法和indexOf一致 从后到前查找
var a="abcde";
console.log(a.lastIndexOf("d"));//1
push 方法:给数组追加元素
var a=new Array(1,2,3,4,5);
a.push(6);
console.log(a);//[1,2,3,4,5,6]
unshift 给数组元素之前追加
var a=new Array(1,2,3,4,5);
a.unshift(6);
console.log(a);//[6,1,2,3,4,5]
pop() 删除数组的最后一个元素
shift 删除第一个元素
slice 截取数组的某一段 两个参数start end 不取end参数的索引位
var a=new Array(1,2,3,4,5);
console.log(a.slice(1,4));//[2,3,4]
splice 从那个位置开始截取几个长度
var a=new Array(1,2,3,4,5);
console.log(a.splice(2,1));//[3]
toString() 把数组转化为字符串
var a=new Array(1,2,3,4,5);
console.log(a.toString().valueOf());//1,2,3,4,5
split 字符串转数组
var a="ab-cd-ef";
console.log(a.split("-"));//["ab","cd","ef"]