JavaScript

JavaScript通常简称JS,由网景(NetScape)公司推出。

是一门面向对象的、轻量级、弱类型的解释性脚本语言。

弱类型:没有数据类型的限制,变量甚至可以不用定义就能使用。

解释性:无需编译,通过解释器解释运行。浏览器就是一个JS解释器。

script脚本:按指令顺序执行。

JS的作用

HTML用来定义页面中的内容

CSS用于控制HTML元素的外观样式

JS用来操作HTML元素

HTML+CSS+JS组成前端基本三要素。

  • 可以在页面中控制任意元素
  • 可以在页面中动态嵌入元素
  • 可以操作浏览器
  • 可以与用户进行数据交互
  • 。。。

JS写在哪里

1、写在某个标签的某个事件中

事件如鼠标单击onclick、鼠标移入onmouseenter等。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
	</head>
	<body>
		
		<!-- 通过提示框输出alert('输出内容') -->
		<button οnclick="alert('Hello JS')">点击</button>
		<!-- 通过控制台输出console.log('输出内容') -->
		<button οnclick="console.log('Hello JS!')">点击2</button>
		<!-- 通过新页面输出document.write('输出内容') -->
		<button οnclick="document.write('Hello JS!')">点击3</button>
		
	</body>
</html>

2、写在

该标签是一个双标签,可以放在页面的任何位置,通常放在head标签中或body标签结束的位置。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<!-- 可以将js代码写在这里 -->
		<script>
        	//js代码
            </script>
	</head>
	<body>
		<!-- 建议将js代码写在这里 -->
		<script>
        	//js代码
        </script>
	</body>
</html>

3、可以写在一个独立的.js文件中,再通过script标签导入

JS中的输出语句

1、弹警告框

alert(字符串或变量)

2、控制台输出

console.log(字符串或变量)

3、打印在新页面中

document.write(字符串或变量)

JS中的注释

//单行注释
/*
	多行注释
*/

JS的组成

1、ECMAScript

简称ES,是JS的标准,也是JS核心语法

包含了数据类型、定义变量、控制流程语句等语法。

2、BOM

浏览器对象模型

3、DOM

文档对象模型

ECMAScript核心语法

数据类型

原始类型:

JS中的原数类型

说明

数值型number

整数、小数都称为数值型

字符串String

用单引号或双引号引起来的都是

布尔型boolean

true/false

空null

某个引用类型变量通过null设置为空

未定义undefined

当某个变量没有声明或没有值时

引用类型

如对象、数组、函数等都是引用类型

定义变量

var/let 变量名:
var name;
var age;
let sex;

标识符的命名规则

  • 由字母、数字、下划线和$符号组成
  • 不能以数字开头
  • 不能使用js中的关键字

变量的初始化

var name;
name = "Tom";
var age = 22;
//可以不用var定义,但不建议			
sex = "男";
//都可以正常输出
console.log("name:"+name+",age:"+age+",sex:"+sex);

运算符

js中的boolean类型,0表示false,非0都是true。

默认true为1,所以可以用true或false当做数字使用。

所以可以用true或false当做数字来运算。

  • 算术运算符
+ - * / %
+ 两端如果有一端是字符串作为拼接使用
+ 两端如果都是数值,作为相加使用

除+外,其余符号都可以计算数字字符串
  • 关系
> < >= <=
用法同java,结果为boolean类型
==
比较显示的内容相同,不比较数据类型,如“123”==123,结果为true
===
比较的是内容与数据类型,都相同结果才为true
!=
比较值是否不同,如"123"!=123;结果为false
!==
同时比较值和数据类型是否不同,如"123" !== 123结果为true
  • 逻辑
&& || !
用法同Java
  • 赋值和复合赋值
= += -+ *= /+ %=

a*=b+c相当于a=a*(b+c)
符号两端当做整体运算后赋值给符号左边变量
  • 自增自减
++ --
符号在前,先+1或-1后使用
符号在后,先使用后+1或-1

如果独立成行,都+1或-1
var 1=10;
var res=i-- - --i;
//res为10-8=2,i最终为8
  • 条件
表达式1?表达式2:表达式3
判断表达式1,结果为true执行表达式2,结果为false执行表达式3

条件语句

if语句

js中的if语句条件可以是boolean值也可以是一个数字(0false,非0true)

//单分支
if(){
   
   }
//双分支
if(){
   
   }else{
    
}
//多分支
if(){
   
   }else if(){
            
   }
//嵌套
if(){
   if(){
    
	}
}

多分支if语句中,如果有一个条件满足则不再判断后续的条件,所以将范围最小的情况写在最前。

switch语句

//可以是任意类型
var op;
switch(op){
    case "":
        break;
    case 123:
        break;
    case true:
        break;
    default:
        
}

与java中不同的是,小括号中没有数据类型的限制,不同的case后可以写不同类型的数据。

没有break,会继续执行后续case后的内容,知道break或没有代码,如果没有任何case满足,执行default。

循环

while循环

while(循环条件){
    循环体
}

先判断后执行,有可能一次都不执行

do-while循环

do{
    循环体
}while(循环条件);

先执行一次,再判断,至少执行一次。

for循环

for(定义循环变量;判断循环条件;更新循环变量){
    循环体
}

continue和break

continue停止本次循环,执行下一次循环。

break停止所有循环。

JS中的本地对象

数组Array

JS中的数组类似于java中的ArrayList,

可以保存不同类型的数据,数组大小可变。

定义数组

var 数组名 = new Array();
var 数组名 = [];

数组使用

//定义数组
//1、默认没有给某个位置赋值时,是undefined
//2、最大下标决定了数组长度
//3、可以保存不同类型的数据
var list1= new Array();
list1[0]=123;
list1[3]="hello";
list1[10]=true;

数组遍历

// length属性可以获取数组长度
//循环所有下标,没有赋值元素的输出undefined
for(var i=0;i<list1.length;i++){
    console.log(list1[i]);
}
// 增强for循环,获取保存了数据的下标9
for(var index in list1){
    // 通过下标获取元素
    console.log(list1[index]);
}

数组初始化

var 数组名 = new Array(元素1,元素2,...)
var 数组名 = [元素1,元素2,...]

常用方法

方法名

作用

返回值

sort()

对数组中的元素进行升序排序

排序后的数组

reverse()

对数组中的元素进行倒序

倒序后的数组

pop()

移除最后一个元素

被移除的元素

push()

添加元素到数组末尾

最新的数组长度

shift()

删除数组中的第一个元素

被移除的元素

unshift()

添加元素到数组开头

最新的数组长度

fill(元素)

使用指定元素填充数组

填充后的数组

splice(index)

从指定索引开始分割数组,方法调用后,数组为剩余元素数组

返回截取到的元素数组

splice(index,length)

从指定索引开始截取指定长度的数组,方法调用后,数组为剩余元素数组

截取到的元素

以上方法在调用后,都会影响原数组

方法名

indexOf(元素)

得到某个元素第一次出现的索引

索引

lastIndexOf(元素)

得到某元素最后一次出现的索引

索引

concat(元素)

将指定元素添加到原数组末尾

添加后的数组

join(字符)

使用指定符号将数组元素拼接成一个字符串

拼接后的字符串

slice(start,end)

截取指定下标为[a,b)范围内的元素

截取后的数组

slice(index)

截取从index开始至末尾的元素

截取后的数组

Map(方法名)

让数组中的元素都执行指定方法

执行方法后的新数组

日期Date

创建Date对象

var now = new Date();

常用方法

// 获取当前日期时间
var now = new Date();

// 年
document.write(now.getFullYear()+"<br>");
//0-11,表示1-12
document.write(now.getMonth()+"<br>");
// 日期
document.write(now.getDate()+"<br>");
// 一周中的第几天 0-6表示周天到周六
document.write(now.getDay()+"<br>");

document.write(now.getHours()+"<br>");

document.write(now.getMinutes()+"<br>");

document.write(now.getSeconds()+"<br>");
//获取从1979/1/1日起经过的毫秒数
document.write(now.getTime()+"<br>");

//以上方法都有对应的set方法用于设定指定值

// 获取日期时间字符串
document.write(now.toString()+"<br>");
//获取日期部分字符串
document.write(now.toDateString()+"<br>");
//获取时间部分字符串
document.write(now.toTimeString()+"<br>");

// 以当前环境输出日期时间字符串
document.write(now.toLocaleString()+"<br>");
// 以当前环境输出日期字符串
document.write(now.toLocaleDateString()+"<br>");
// 以当前环境输出时间字符串
document.write(now.toLocaleTimeString()+"<br>");