JavaScript基础与高级

JavaScript_基础

网页中个技术的作用

技术作用
HTML创建网页的结构
CSS页面的美化
JavaScript用于网页的交互,让网页变得更加生动,提高用户的体验

JavaScript的两种引入方式

语言组成
组成部分作用
ECMA Script所有脚本语言规范,构成了JavaScript语法基础
BOMBrowser Object Model 浏览器对象模型,用来操作浏览器中各种对象
DOMDocument Object Model 文档对象模型,用来操作网页中各种元素

script标签的说明

  1. 标签个数:在同一个网页中可以出现多个script标签

  2. 位置:script标签可以放在网页中任意位置,甚至html之外

  3. 语句后分号:如果一行代码一条语句,分号可以省略,不建议省略

  4. js脚本通常放在HTML外面,导入来使用,使用script标签来导入。

    属性:src 执行要导入的外部js文件

    必须是有一个主体都的标签

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>JavaScript的初体验</title>
    </head>
    <body>
    <!--JavaScript脚本必须放在script标签中,MIME类型:大类型/小类型 -->
    <script type="text/javascript">
        for (var i = 0; i < 5; i++) {
            //在文档上写东西,整个网页就是一个文档document
            document.write("<h1>Hello World!</h1>");
        }
    </script>
    
    <!--
    1. 标签个数:在同一个网页中可以出现多个script标签1
    2. 位置:script标签可以放在网页中任意位置,甚至是html之外
    3. 语句后分号:如果一行代码一条语句,分号可以省略,不建议省略
    
    4. 以后js脚本通常放在HTML外面,导入来使用,使用script标签来导入。
    属性:src 指定要导入的外部js文件
    必须是一个有主体的标签
    -->
    <script src="js/out.js" type="text/javascript"></script>
    </body>
    </html>
    

定义变量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>变量定义</title>
</head>
<body>
<!--输入sc以后,按ctrl+j-->
<script type="text/javascript">
    var i = 5;  //定义整数
    let m = 6;  //默认idea不支持,要修改EC为6
    const PI = 3.14;  //常量
    document.write(i + "<br/>");
    document.write(m + "<br/>");
    //PI = 5;  不能重新赋值
    document.write(PI + "<br/>");
</script>
</body>
</html>

数据类型

数据类型Java中定义变量JS中定义变量
整数int i = 5;var i=5;
浮点数float f = 3.14f; 或 double d=3.14;var f=3.14;
布尔boolean b = true;var b=true;
字符char c = ‘a’;var c = ‘a’; //没有字符类型,只有字符串
字符串String str = “abc”;var str = “abc”;

var和let区别

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>var和let的区别</title>
</head>
<body>
<script type="text/javascript">
    //1.作用域不同:var定义的变量在代码块中不受{}限制,let定义的变量是受限制
    {
        var x = 5;
    }
    document.write(x + "<br/>");  //可以输出,不受{}限制

    {
        let y = 6;
    }
    //document.write(y + "<br/>");  //找不到y的值,出错

    //2.重新定义变量区别:var可以修改变量的值
    var a = 10;
    {
        var a = 2;
    }
    document.write(a + "<br/>");  //2

    let b = 5;
    {
        let b = 3;  //不可见
    }
    document.write(b + "<br/>");  //5

    //3.const关键字,如果是对象,它的属性可以修改
    const person = {"name": "NewBoy", "age": 18};
    document.write(person.name + "<br/>");
    document.write(person.age + "<br/>");
    //person = {};  //不行的
    person.age = 19;
    document.write(person.age + "<br/>");
</script>
</body>
</html>

小结

  1. 在JS中定义变量使用哪个关键字?

    1. var
    2. let
  2. JS是弱类型还是强类型?

    ​ 弱类型语言

  3. 有没有字符和字符串的区别?

    没有字符类型,只有字符串,字符串使用:"" ,’’ ,``

typeof操作符

​ 分别输出整数、浮点数、字符串(单引号和双引号)、布尔、未定义、对象、null的数据类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>五种数据类型</title>
</head>
<body>
<script type="text/javascript">
    //分别输出整数、浮点数、字符串(单引号和双引号)、布尔、未定义、对象、null的数据类型
    let i = 5;
    document.write(typeof(i)+ "<br/>");  //number

    let f = 3.4;
    document.write(typeof(f) + "<br/>");  //number

    let c = 'a';
    document.write(typeof(c) + "<br/>");  //string

    let s = "abc";
    document.write(typeof(s) + "<br/>");  //string

    let b = true;
    document.write(typeof(b) + "<br/>");  //boolean

    let u;
    document.write(typeof(u) + "<br/>");  //undefined

    let n = {name: "jack", age: 18};
    document.write(typeof(n) + "<br/>");  //object

    /**
     * 注:null和undefined的区别
     * 1. null本质上是一个对象类型,只是这个对象没有值
     * 2. undefined 未知的类型
     */
    let x = null;
    document.write(typeof(x) + "<br/>");   //object
</script>
</body>
</html>
比较运算符

比较运算符用于逻辑语句的判断,从而确定给定的两个值或变量是否相等。

image-20200409091213774

数字可以与字符串进行比较,字符串可以与字符串进行比较。字符串与数字进行比较的时候会先把字符串转换成数字然后再进行比较

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>运算符</title>
</head>
<body>
<script type="text/javascript">
    let s1 = 5;
    let s2 = "5";
    document.write((s1 == s2) + "<br/>");  //true 比较值是否相等
    document.write((s1 === s2) + "<br/>");  //恒等于,既比较值,又比较类型

    document.write((s1!=s2) + "<br/>");  //false
    document.write((s1!==s2) + "<br/>");  //恒不等于 true
</script>
</body>
</html>

逻辑运算符

逻辑运算符用来确定变量或值之间的逻辑关系,支持短路运算

1551947786567

逻辑运算符不存在单与&、单或|

三元运算符
1551947843411

流程控制

if 语句:

在一个指定的条件成立时执行代码。

if(条件表达式) {
     //代码块;
}
if…else 语句

在指定的条件成立时执行代码,当条件不成立时执行另外的代码。

if(条件表达式) {
     //代码块;
 }
 else {
     //代码块;
 }
if…else if…else 语句

使用这个语句可以选择执行若干块代码中的一个。

if (条件表达式) {
     //代码块;
 }
 else if(条件表达式) {
     //代码块;
 }
 else {
     //代码块;
 }

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>if语句</title>
</head>
<body>
<script type="text/javascript">
    /*
    1. Java中判断条件必须是布尔类型的值
    2. 在JS中可以使用非布尔类型的表达式
                    真       假
        number      非0      0
        string      非空串   空串 ""
        object      非空     null
        undefined            永远为假
        NaN (Not a Number)   永远为假
    3. 建议判断条件还是使用boolean类型比较好
     */
    /*
    if(0) {
        document.write("真" + "<br/>");
    }
    else {
        document.write("假" + "<br/>");
    }
     */

    /*
    if("") {
        document.write("真" + "<br/>");
    }
    else {
        document.write("假" + "<br/>");
    }
     */

    /*
    var person = {};  //创建一个对象
    if(null) {
        document.write("真" + "<br/>");
    }
    else {
        document.write("假" + "<br/>");
    }
     */

    let u;   //undefined
    if(u) {
        document.write("真" + "<br/>");
    }
    else {
        document.write("假" + "<br/>");
    }
</script>
</body>
</html>

总结

Java中判断条件必须是布尔类型的值

在JS中可以使用非布尔类型的表达式

 真       假
number      非0      0
string      非空串   空串 ""
object      非空     null
undefined            永远为假
NaN (Not a Number)   永远为假

建议判断条件还是使用boolean类型比较好

switch语句
switch(true) {  //这里的变量名写成true
   case 表达式:     //如:n > 5
     break;
   case 表达式:
     break;
   default:
     break;
 }

与java的switch区别

在java中case 后面只能是常量,但是在javaScript中case 后面可以用表达式,java中不行的。

window对象

window对象的方法名作用
string prompt(“提示信息”,"默认值”)输入框,参数: 1. 输入的提示信息 2. 一开始出现在输入框中值 返回值:就是用户输入的信息,字符串类型
setInterval(“函数名()”,隔多久调用一次)每隔一段时间就调用指定的函数
参数1:方法名
参数2:隔多久调用一次,单位毫秒值
alert(“提示信息”)输出信息框
confirm(“提示内容”)浏览器弹出一个提示框,如果点击是就是true,如果点击否就是false
  • window.confirm(“提示内容”)->浏览器弹出一个提示框,如果点击是就是true,如果点击否就是false
    例如:let flag=confirm(“是否”);
  <!DOCTYPE html>
  <html lang="en">
  <head>
      <meta charset="UTF-8">
      <title>Title</title>
  </head>
  <body>
  
  </body>
  <script type="text/javascript">
      let b = window.confirm("YES OR NO");//如果选择是,b的值就是true  否则就是false
      document.write(b);
  </script>
  </html>

  • window.propmt(“提示信息”)->浏览器弹出一个提示框和一个输入框,输入的内容可以用一个变量来接受
    例如:let srt=propmt(“请输入内容”)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    </body>
    <script type="text/javascript">
        let gender = window.prompt("你是男是女");//提示信息
        document.write(gender);//接收用户输入的内容
    </script>
    </html>
    
    
  • alert(“提示信息”)

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    </body>
    <script type="text/javascript">
        alert("JavaScript");
    </script>
    </html>
    
    

    效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LFFoL7V1-1592209088349)(C:\Users\wucn\AppData\Roaming\Typora\typora-user-images\1592193129395.png)]

命名函数和匿名函数

函数的概念

  • 什么是函数:

    一个代码块,给一个代码块起一个名字,以后通过名字来进行调用,实现重用的功能,类似于java中的方法

  • 两种函数

    • 命名函数:有名字的函数,可以通过名字来进行多次调用
    • 匿名函数:没有名字的函数,不可重用,只能使用一次。但可以通过一个变量来指向它,实现重用

命名函数的格式:

function 函数名(参数列表){
    //代码块
    return 返回值 ;//可选:如果这个函数有返回值,就是用return,没有就不使用
}

定义一个函数实现加法功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script type="text/javascript">
    //调用加法函数
    let addition1 = addition(10,10);
    document.write(addition1);
    //加法函数
    function addition(a,b) {
            return a+b;
    }
</script>
</html>

注意事项

  • 在JS中没有函数的重载,后面出现的同名函数会覆盖前面的同名函数
  • 实参个数与形参的个数无关,只会按函数名字去调用
  • 在每个函数的内部都有一个隐藏的数组,名字叫arguments
  • 隐藏数组的执行过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tFLucRsf-1592209088354)(C:\Users\wucn\AppData\Roaming\Typora\typora-user-images\1592198165805.png)]

设置事件的两种方式

什么是事件

​ 用户在操作网页的过程中,会有各种操作,每种操作都会产生事件。我们可以通过JS来监听这些事件,对这些事件编写函数进行处理,来实现交互

设置事件的两种方式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>事件的处理方式</title>
</head>
<body>

<!--onclick表示点击事件-->
<input type="button" value="命名函数" id="b1" onclick="clickMe()">
<input type="button" value="匿名函数" id="b2">

<script type="text/javascript">
    /*
    有两个按钮,点第1个弹出一个信息框,点第2个弹出另一个信息框。分别使用两种不同的方式激活事件
    1. 使用命名函数的处理方式:
       在标签上直接使用 on事件名="处理函数()"

    2. 使用匿名函数的处理方式:
        元素对象.on事件名 = function() {
        }
     */
    function clickMe() {
        alert("命名函数");
    }

    //得到按钮2这个对象
    document.getElementById("b2").onclick = function () {
        alert("匿名函数");
    }
</script>
</body>
</html>

  1. 事件处理中命名函数的写法

    onclick = "函数名()"
    
    function 函数名() {
    
    }
    
    
  2. 事件处理中匿名函数的写法

    元素对象.onclick = function() {
      
    }
    
    

    各个事件

    事件名作用
    onclick单击
    ondblclick双击
    onload加载完毕
    onfocus得到焦点
    onblur失去焦点
    onchange改变事件
    onmouseover鼠标移上
    onmouseout鼠标移出

内置对象

字符串对象
方法名作用
substring(startIndex,endIndex)取子字符串,包头不包尾,索引从0开始。参数是起始位置
substr(startIndex, length)取子字符串,起始位置,长度
split(delimiter)把一个字符串使用指定的分隔符,切割成一个数组
toLowerCase()变成小写
toUpperCase()变成大写
trim()去掉前后的空格
数学对象
方法名作用
round(x)四舍五入保留到整数
floor(x)向下取整
ceil(x)向上取整
random()随机生成0~1之间的小数,不等于1
全局函数
字符串转为数字说明
parseInt(字符串)转成整数,如果转换失败,返回NaN
parseFloat(字符串)转成小数
isNaN(字符串)在转换前判断是否为非数字,非数字返回true,数字为false
编码和解码说明
encodeURI(字符串)对汉字进行URI编码
编码后是(%…%)这种信息
decodeURI(字符串)对URI编码后的
将上上面的开始格式转成一个汉字字符串
数组对象
方法名功能
concat()拼接数组
reverse()反转
join(separator)将数组接拼接成一个字符串
sort()排序
pop()删除最后一个元素
push()添加元素
日期对象
  1. 创建日期

    let date = new Date();
    
    

    日期对象的方法

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sf84DLj6-1592209088355)(C:\Users\wucn\AppData\Roaming\Typora\typora-user-images\1592201383615.png)]

JavaScript_高级

JSON

什么是JSON

  • JSON(JavaScript Object Notaion,JavaScript对象标记),是一种轻量级的数据交换格式,用于服务器与浏览器之间传输数据。以前都是XML 传递数据。在AJAX中传递的数据格式也是使用的JSON
    • XML不足
      1. 描述信息的数据比需要的真是数据多
      2. 占用了更多的传输宽带
      3. 解析XML比较麻烦
<contact>
	<name>貂蝉</name>
	<gender>false</gender>
	<age>20</age>
</contact>

  • JSON

    {
      name: "貂蝉",
      gender: false,
      age: 20
    }
    
    

json的语法格式

类型语法解释
对象类型{键:值, 键:值}代表一个对象,可以有多个属性
属性与值之间使用冒号,属性与属性之间使用逗号
数组/集合类型[元素,元素,元素]数组中每个元素类型是可以不同
混合类型[{键:值},{键:值},{键:值}]数组中每个元素是一个对象
{键:[元素,元素,元素]}是一个对象,但某个属性是一个数组或集合

JS中操作JSON的方法

语法功能
JSON.parse(“字符串”)将一个字符串转成JSON格式
注:JSON字符串中的属性名一定要用双引号引起来
JSON.stringify(JSON)将一个JSON对象转成一个字符串
代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script type="text/javascript">
    //将字符串转成一个JSON格式
   let str='{"username":"张三","password":123}';
   let user=JSON.parse(str);
   alert("用户名:"+user.username+" 密码:"+user.password);
    //
   let s = JSON.stringify(user);
   alert(s);
</script>
</html>

BOM:location对象

什么是BOM

浏览器对象模型,用来操作浏览器中各种对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K7p23cDa-1592209088357)(C:\Users\wucn\AppData\Roaming\Typora\typora-user-images\1592205462866.png)]

  1. winds对象(JavaScript中已介绍window对象)

  2. history(历史)

    作用:访问历史记录中的页面

    三个方法:

    1. ​ forward()

      相当于浏览器上的前进按钮,如果浏览器上前进按钮不可用,这个方法也不起作用

    2. back()

      相当于浏览器上后退按钮

    3. go(整数或负数)

      正数是前进,负数是后退

  3. location(地址栏)

    作用:代表浏览器上地址栏对象,主要用于页面跳转

    2个属性

    1. ​ href

      • 获取属性值,得到当前访问地址 location.href->得到当前的页面的地址。
      • 设置属性值,跳转到指定页面 location.href=“http://www.baidu.com”->跳转到指定的地址。
    2. search:

      let seach=location.seach;->获取?后面的参数

      GET方法提交表单的时候,参数会显示在地址栏上面

​ 方法:

​ reload ():相当于刷新整个页面

DOM查找元素的方法

查找节点的方法
获取元素的方法作用
document.getElementById(“id”)通过id得到一个元素
document.getElementsByTagName (“标签名”)通过标签名得到一组元素
document.getElementsByName(“name”)通过name属性得到一组元素
document.getElementsByClassName(“类名”)通过类名得到一组元素
根据CSS选择器获取元素作用
document.querySelector(CSS选择器)通过css选择器获取一个元素,如:"#id" “.类名” “标签名”
document.querySelectorAll(CSS选择器)通过css选择器获取一组元素

正则表达式

正则表达式:
	作用:判断正则表达式是否匹配字符串的方法:
		boolean 正则表达式对象.test(字符串) 如果匹配返回true,否则返回false
		例如:let str='^ $'; 这是一个正则表达式
			  str.test("字符串") ->判断这个字符串是否符合这个正则表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值