1、JavaScript概述

1、一门客户端脚本语言,运行再客户端浏览器中,每个浏览器都有JavaScript的解析引擎,不需要编译,直接就可以被浏览器执行了
2、可以用来增强用户和html页面的交互过程,可以控制html元素,让页面有一些动态的效果,增强用户体验
3、js源码不需要编译,浏览器就可以直接解释运行
4、js是弱类型语言,js变量声明不需要指明类型
5、ECMAScript:构成了JS核心的语法基础
BOM:Browser Object Model 浏览器对象模型,用来操作浏览器上的对象
DOM:Document Object Model 文档对象模型,用来操作页面中的元素

2、JavaScript基础语法

HTML引入JS:

  1. JS的引入:
  2. 内部:定义script标签,标签体内就是js代码(推荐插在body尾部)
  3. 外部:<script src="js/文件名.js"></script>
  4. 1、script标签不能闭合
  5. 2、如果script标签使用src属性,那么浏览器将不会解析此标签体的js代码

JS三种输出数据方式:

  1. 浏览器弹框输出字符:
  2. <script>
  3. alert('浏览器弹框输出字符');
  4. </script>
  5. 输出html内容到页面:
  6. <script>
  7. document.write('输出html内容到页面');
  8. </script>
  9. 输出到浏览器控制台:
  10. <script>
  11. console.log('输出到浏览器控制台');
  12. </script>

JS变量声明:

1、java是强类型语言,注重变量的定义,所以在定义变量时都需要指定数据类型
2、js时弱类型语言,不注重变量的定义,所以定义变量时不需要指定数据类型
let 变量名 = 值;
var 变量名 = 值;
const 常量名 = 值;
3、ECMAScript6之前定义变量使用var,但是会有很多坑,所以ECMAScript6之后开始推出了let声明变量,const声明常量
4、在js中,未赋值的变量,也是可以使用的,但是这个值时undefined,未定义的变量

JS数据类型:

js和java一样,数据类型分为基本数据类型(原始数据类型)和引用数据类型

  1. 属性 描述
  2. number 数字类型
  3. string 字符串类型
  4. boolean true/false
  5. object 对象(function,null)
  6. undefined 未定义
  7. typeof判断数据类型

JS运算符:

JavaScript中的运算符和大多数编程语言中的运算符都接近,只有个别运算符因其活活性而带来了些许不同
===:全等于
问:==和===之间的区别
答:1、==只比较内容是否相同,根本不比较数据类型
2、===,在比较之前,先判断数据类型,如果类型不一样,则直接返回false
1、数值在与字符串加法运算时,结果都是字符串
2、做除法时,java中两个整数相除得到的结果还是整数,而js中是有小数点的
3、如果数值与boolean类型的数据,进行运算时,会将boolean数据转换成数值(true转为1,false转为0)

JS流程控制语句:

js与java一样,也有三个流程控制语句:顺序结构,选择结构,循环结构
if结构:
js的条件语句和java语法基本一样,但对数据类型的真假有些许区别

  1. boolean true为真,false为假
  2. number 非0为true
  3. string 除了空字符串(“”),其他都是true
  4. null&undefied 都是false
  5. 对象 所有对象都为true
  6. 总结:无意义的数据都为flase,反之都为true

switch结构:
1、在java中,switch语句可以接受的数据类型:byte,int,short,char,枚举(1.5),String(1.7)
2、switch(变量):
case 值:
3、在JS中,switch语句可以接受任意的原始数据类型
for循环:
1、普通for循环:
for(let 初始化语句;条件表达式;条件控制语句){循环体;}
2、增强for循环:
for(let 变量名 of 对象){需要执行的代码;}
3、索引for循环:
for(let 变量 in 对象){需要执行的代码}
问:forof与forin之间的区别
答:1、forin可以遍历对象,forof不能遍历对象
2、forin遍历出数组的索引,对象中的属性名key,forof遍历出数组的元素
while循环和dowhile循环:用法和java一样
forin:遍历出数组的索引
遍历出对象的属性名key
forof:遍历数组中的元素

JS函数:

js函数时执行特定功能的代码块,也可以称为js方法,与java 中的方法的功能是一样的

  1. function 函数名 (参数列表){
  2. 函数体;
  3. [return 返回值;]
  4. }

注意事项
1、方法定义时,形参的类型不用写,返回值类型可写可不写
2、如果定义名称相同的方法,会被覆盖,js中没有方法的重载的概念
3、在JS中,方法的调用只与方法的名称有关,和参数列表无关
4、在方法声明中有一一个隐藏的内置对象(数组),arguments,封装所有的实际参数
5、JS函数中也可以有匿名函数

  1. 匿名函数经常会跟事件进行结合着使用
  2. function(参数列表){
  3. 函数体;
  4. [return 返回值;]
  5. }

3、JS常用内置对象

String对象:

三种方式代表string对象:单引号,双引号,反引号

  1. 常用方法:
  2. substringx,y); 截取从x索引到y索引之间的字符,包含x不包含y
  3. toLowerCase(); 把字符转换为小写
  4. toUpperCase(); 把字符转换为大写
  5. replace(); 替换与正则表达式匹配的子串
  6. charAt(); 返回指定位置的字符
  7. trim();移除字符串首尾空白
  8. splitx); 把字符串分割为子字符串数组,以x字符分割

Array对象:

let 数组名 = [元素1,元素2,元素3 。。。] ;
let 数组名 = new Array(元素1,元素2,元素3 。。。);

  1. 常用方法:
  2. concat() 连接两个或更多的数组,并返回结果
  3. push() 向数组的末尾添加一个或更多元素,并返回新的长度
  4. join(参数) 将数组中的元素按照指定的分隔符拼接为字符串

1、在JS中,数组元素的类型可变的
2、在JS中,数组长度可变的

Math对象:

Math对象不用创建,直接使用:Math.方法名( );

  1. 常用方法:
  2. roundx):把数四舍五入为最接近的整数
  3. floorx):向下取整
  4. ceilx):向上取整
  5. random():随机数,返回0~1之间的随机数,包含0不包含1
  6. Math.PI :圆周率=====》3.141592653589793

Date对象:

var date = new Date();

  1. 常用方法:
  2. toLocaleString():返回当前date对象对应的时间本地字符串格式
  3. getTime();返回当前时间到197011日零点的毫秒值差
  4. getFullyear:获取年
  5. getMonth:获取月
  6. getDate:获取日
  7. getHours:获取时
  8. getMinutes:获取分
  9. getSeconds:获取秒

常用全局函数:

字符串与number之间的转换
parseint():将字符串解析成一个整数
parseFloat():将字符串解析成一个浮点数
isNaN():判断是否是一个NaN类型的数据(非数字)
isNaN六亲不认,连自己都不认
如果要判断是否是一个NaN类型的数据,使用isNaN();

  1. 字符编码:
  2. encodeURI():把字符串编码为URI
  3. decodeURI():解码某个编码的URI
  4. 普通字符串解析js代码:
  5. eval():计算JavaScript字符串,并把它作为脚本代码来执行
  6. let jscode = "alert(123)";
  7. evaljscode);