Javascript

1.Javascript的引入方式

  • 内部脚本:将 JS代码定义在HTML页面中
<script>
   alert("hello js1");
</script>
  • 外部脚本:将 JS代码定义在外部 JS文件中,然后引入到 HTML页面中
     <script src="../js/demo.js"></script>

1.在 HTML 中,JavaScript 代码必须位于 <script></script> 标签之间
2.一般把脚本置于 body 元素的底部,可改善显示速度
3.因为浏览器在加载页面的时候会从上往下进行加载并解析。 我们应该让用户看到页面内容,然后再展示动态的效果。

函数预解析—变量提升和函数提升

   // 相当于顺序执行了以下操作----------------------------
        // 变量提升
        var num; 
        // 函数提升 , 但不会调用 ,不调用不执行           
        function demo() {   
             // 当前作用域(即函数demo()里面) 变量提升 
            var num;            执行3. 当前作用域内定义一个num
             // 当前作用域(即函数demo()里面)函数提升   不调用不执行        
            function demoSon() { 
                // 未定义直接赋值,此时作用域链指向demo()中的num
                num = 3;
            }
            console.log(num);   执行4、打印num 作用域链指向执行3的num(当前作用域函数demo内)
                                       定义未赋值  所以结果为underfined
            num = 2             执行5.  给函数demo里面的num赋值     打印在前,赋值在后
            demoSon();          执行6. 调用demoSon()后demo中的num 值变为3; 全局变量num不做更改 
        }
        //提升变量但是变量赋值不会提升
        num = 1;                执行1. 给num 赋值为1
        demo();                 执行2. 调用demo( 

2.简单类型与复杂类型

  1. 简单类型又叫做基本数据类型或者值类型,复杂类型又叫做引用类型
    值类型:简单数据类型/基本数据类型,在存储时变量中存储的是值本身,因此叫做值类型
    string ,number,boolean,undefined,null
    引用类型:复杂数据类型,在存储时变量中存储的仅仅是地址(引用),因此叫做引用数据类型
    通过 new 关键字创建的对象(系统对象、自定义对象),如 Object、Array、Date等

课件 后续补…

2.Javascript的基础语法

  0.书写语法

  • 区分大小写:与 Java 一样,变量名、函数名以及其他一切东西都是区分大小写的

  • 每行结尾的分号可有可无

    如果一行上写多个语句时,必须加分号用来区分多个语句。

  • 注释

    • 单行注释:// 注释内容
    • 多行注释:/* 注释内容 */

    注意:JavaScript 没有文档注释

  • 大括号表示代码块

  1.输出语句

  • 使用 window.alert() 写入警告框 ----------------------window可以省略
  • 使用 document.write() 写入 HTML 输出
  • 使用 console.log() 写入浏览器控制台

  2.变量

var
  JavaScript 中用 var 关键字(variable 的缩写)来声明变量。格式 var 变量名 = 数据值;。而在JavaScript 是一门弱类型语言,变量可以存放不同类型的值;如下在定义变量时赋值为数字数据,还可以将变量的值改为字符串类型的数

var test = 20;
test = "张三";

JavaScript 中 var 关键字有点特殊,有以下地方和其他语言不一样

  • 作用域:全局变量
{
    var age = 20;
}
alert(age);  // 在代码块中定义的age 变量,在代码块外边还可以使用
  • 变量可以重复定义
{
    var age = 20;
    var age = 30;//JavaScript 会用 30 将之前 age 变量的 20 替换掉
}
alert(age); //打印的结果是 30

let

只在 let 关键字所在的代码块内有效,且不允许重复声明

  3.数据类型

	JavaScript 中提供了两类数据类型:原始类型 和 引用类型。

1.使用 typeof 运算符可以获取数据类型

2.alert(typeof age); 以弹框的形式将 age 变量的数据类型输出


3.原始数据类型:

  • 1.number:数字(整数、小数、NaN(Not a Number))

注意: NaN是一个特殊的number类型的值

  • 2.string:字符、字符串,单双引皆可

js 中 双引号和单引号都表示字符串类型的数据

  • 3.boolean:布尔。true,false
  • 4.null:对象为空 ----object
  • 5.undefined:当声明的变量未初始化时,该变量的默认值是 undefined

  4.运算符

    1. = =和===区别

==:

  1. 判断类型是否一样,如果不一样,则进行类型转换
  2. 再去比较其值

===:js 中的全等于

  1. 判断类型是否一样,如果不一样,直接返回false
  2. 再去比较其值

     2.类型转换

  1. 其他类型转为number
  • string 转换为 number 类型:按照字符串的字面值,转为数字。如果字面值不是数字,则转为NaN
    将 string 转换为 number 有两种方式
var str = "20";
alert(parseInt(str) + 1);

2.其他类型转为boolean

  • number 类型转换为 boolean 类型:0和NaN转为false,其他的数字转为true
  • string 类型转换为 boolean 类型:空字符串转为false,其他的字符串转为true
  • null类型转换为 boolean 类型是 false
  • undefined 转换为 boolean 类型是 false

  5.流程控制语句

  6.函数

1.声明函数 和 调用函数
2.函数调用需要加()
3.函数不会自己执行 ,需要调用才会执行。

     1.定义格式

  • 方式1
    function 函数名(参数1,参数2…){
    要执行的代码
    }
  • 方式2
    var 函数名 = function (参数列表){
    要执行的代码
    }

形式参数不需要类型。因为JavaScript是弱类型语言

     2.函数参数

在这里插入图片描述

     3.函数返回值

  1. 在使用 return 语句时,函数会停止执行,并返回指定的值
  2. 如果函数没有 return ,返回的值是 undefined
  3. return 只能返回一个值。如果用逗号隔开多个值,以最后一个为准。

     4.break ,continue ,return的区别

  1. break :结束当前的循环体(如 for、while)
  2. continue :跳出本次循环,继续执行下次循环(如 for、while)
  3. return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码

     5.arguments的使用

当我们不确定有多少个参数传递的时候,可以用 arguments 来获取。在 JavaScript 中,arguments 实际上它是当前函数的一个内置对象。所有函数都内置了一个 arguments 对象,arguments 对象中存储了传递的所有实参。

arguments展示形式是一个伪数组,因此可以进行遍历。伪数组具有以下特点:

  • 具有 length 属性
  • 按索引方式储存数据
  • 不具有数组的 push , pop 等方法
   function maxValue(){
       var max=arguments[0];
       for (let i = 0; i < arguments.length; i++) {
           if(max<arguments[i]){
                 max = arguments[i];
           }
       }
       return max;
   }
   var max1 = maxValue(5,2,99,101,67,77);
   alert(max1);

     6.函数的两种声明方式

  1. 自定义函数方式(命名函数)
// 声明定义方式
function fn() {...}
// 调用 
fn();
  • 因为有名字,所以也被称为命名函数
  • 调用函数的代码既可以放到声明函数的前面,也可以放在声明函数的后面
  1. 函数表达式方式(匿名函数)
// 这是函数表达式写法,匿名函数后面跟分号结束
var fn = function(){...};
// 调用的方式,函数调用必须写到函数体下面
fn();
  • 因为函数没有名字,所以也被称为匿名函数
  • 这个fn 里面存储的是一个函数
  • 函数表达式方式原理跟声明变量方式是一致的
  • 函数调用的代码必须写到函数体后面

3.Javascript常用对象

  1.Array对象

JavaScript Array对象用于定义数组

  • 方式一
    var 变量名 = new Array(元素列表);
  • 方式二
    var 变量名 = [元素列表];

特点:
JavaScript 中的数组相当于 Java 中集合。数组的长度是可以变化的,而 JavaScript 是弱类型,所以可以存储任意的类型的数据。

// 变长
var arr3 = [1,2,3];
arr3[10] = 10;
alert(arr3[10]); // 10
alert(arr3[9]);  //undefined

又给索引是 10 的位置添加了数据 10,那么 索引3索引9 位置的元素是什么呢?在 JavaScript 中没有赋值的话,默认就是 undefined

属性
在这里插入图片描述
方法
在这里插入图片描述

  1. 检测是否为数组

instanceof 运算符,可以判断一个对象是否属于某种类型
Array.isArray()用于判断一个对象是否为数组,isArray() 是 HTML5 中提供的方法

var arr = [1, 23];
var obj = {};
console.log(arr instanceof Array); // true
console.log(obj instanceof Array); // false
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(obj)); // false
  1. 添加删除数组元素的方法
    在这里插入图片描述
  2. 数组排序
    在这里插入图片描述
  var arr=[1,2,3,54,765];
     arr.sort(function (a, b){
         return b-a;  //b-a降序
         //             a-b升序
     })

  1. 数组排序在这里插入图片描述

  2. 数组转换为字符串
    在这里插入图片描述

在这里插入图片描述

  2.String对象

    1.创建方式

  • 方式1:
    var 变量名 = new String(s);
  • 方式2:
    var str = ‘andy’;

    2.属性

在这里插入图片描述

    3.方法

在这里插入图片描述
String对象还有一个函数 trim() ,该方法在文档中没有体现,但是所有的浏览器都支持;它是用来去掉字符串两端的空格

  1. 基本包装类型:按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,这是因为 js 会把基本数据类型包装为复杂数据类型,其执行过程如下 :
// 1. 生成临时变量,把简单类型包装为复杂数据类型
var temp = new String('andy');
// 2. 赋值给我们声明的字符变量
str = temp;
// 3. 销毁临时变量
temp = null;
  1. 字符串的不可变 ,指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间`
for (var i = 0; i < 100000; i++) {
 str += i;
}
console.log(str); // 这个结果需要花费大量时间来显示,因为需要不断的开辟新的空间
  1. 根据字符返回位置:字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。
    在这里插入图片描述

  2. 根据位置返回字符(重点)
    在这里插入图片描述

  3. 字符串操作方法(重点)
    在这里插入图片描述

  4. replace()方法

replace(被替换的字符串, 要替换为的字符串);

  1. split()方法
var str = 'a,b,c,d';
console.log(str.split(',')); // 返回的是一个数组 [a, b, c, d]
  1. toUpperCase() //转换大写 -------toLowerCase() //转换小写

  3.Math对象

Math.PI // 圆周率
Math.floor() // 向下取整
Math.ceil() // 向上取整
Math.round() // 四舍五入版 就近取整 注意 -3.5 结果是 -3 
Math.abs() // 绝对值
Math.max()/Math.min() // 求最大和最小值

注意:上面的方法必须带括号

  1. random()方法
    random() 方法可以随机返回一个小数,其取值范围是 [0,1),左闭右开 0 <= x < 1

  4.Date对象

var now = new Date();
console.log(now);

如果Date()不写参数,就返回当前时间
如果Date()里面写参数,就返回括号里面输入的时间
如果括号里面有时间,就返回参数里面的时间。例如日期格式字符串为‘2019-5-1’,可以写成new Date('2019-5-1') 或 者 new Date('2019/5/1')
  1. 日期格式化:
    在这里插入图片描述

  2. 获取日期的总的毫秒形式

   var date=new Date();
   date.valueOf();
   date.getTime()

  3.自定义对象

var 对象名称 = {
    属性名称1:属性值1,
    属性名称2:属性值2,
    ...,
    函数名称:function (形参列表){},
	...
};

    1. 利用字面量创建对象

{ } 里面采取键值对的形式表示

  • 键:相当于属性名
  • 值:相当于属性值,可以是任意类型的值(数字类型、字符串类型、布尔类型,函数类型等)
var star = {
 name : 'pink',
 age : 18,
 sex : '男',
 sayHi : function(){
 alert('大家好啊~');
 }
};

调用方式 :
1. star.name     调用属性 
2. star['name']    调用属性 第二种方式
3. star.sayHi(); // 调用 sayHi 方法,注意,一定不要忘记带后面的括号     -调用方法 

    2. 利用 new Object 创建对象

  • Object() :第一个字母大写
  • new Object() :需要 new 关键字
  • 使用的格式:对象.属性 = 值;
 var Mr=new Object();
   Mr.name='鸣人';
   Mr.sex='男';
   Mr.age=19;
   Mr.Skill=function (){
       alert('影分身术');
   }

   alert(Mr.name);
   alert(Mr.Skill());

    3. 利用构造函数创建对象

  • 构造函数 :是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。
  • 在 js 中,使用构造函数要时要注意以下两点:
    1.构造函数用于创建某一类对象,其首字母要大写
    2.构造函数要和 new 一起使用才有意义
创建
 function Person (name , age, value){
        this.name=name,
        this.age=age,
        this.sex=value,
         this.sayHi=function (){
            alert('我的名字叫:' + this.name + ',年龄:' + this.age + ',性别:' + sex);
         }
   }
使用
   var big=new Person('小明',12,'男');
   big.sayHi();
   alert(big.name);

使用注意事项:

  1. 构造函数约定首字母大写。
  2. 函数内的属性和方法前面需要添加 this ,表示当前对象的属性和方法。
  3. 构造函数中不需要 return 返回结果。
  4. 当我们创建对象的时候,必须用 new 来调用构造函数。


new 在执行时会做四件事情:

  1. 在内存中创建一个新的空对象。
  2. 让 this 指向这个新的对象。
  3. 执行构造函数里面的代码,给这个新对象添加属性和方法。
  4. 返回这个新对象(所以构造函数里面不需要return)。\

  4.遍历对象属性

for…in 语句用于对数组或者对象的属性进行循环操作。

for (变量 in 对象名字) {
 // 在此执行代码
}
for (var k in obj) {
 console.log(k); // 这里的 k 是属性名
 console.log(obj[k]); // 这里的 obj[k] 是属性值   这里不能用.的形式  只能用[]
}

4.BOM

BOM:Browser Object Model 浏览器对象模型。也就是 JavaScript 将浏览器的各个组成部分封装为对象。
BOM 中包含了如下对象:

  • Window:浏览器窗口对象
  • Navigator:浏览器对象
  • Screen:屏幕对象
  • History:历史记录对象
  • Location:地址栏对象
    在这里插入图片描述
    BOM 中的 Navigator 对象和 Screen 对象基本不会使用,所以我们的课堂只对 WindowHistoryLocation 对象进行讲解。

  1.Window对象

该对象不需要创建直接使用 window,其中 window. 可以省略。比如我们之前使用的 alert() 函数,其实就是 window 对象的函数,在调用是可以写成如下两种。

1.属性

window 对象提供了用于获取其他 BOM 组成对象的属性
在这里插入图片描述
2.函数
在这里插入图片描述

setTimeout(function,毫秒值)` : 在一定的时间间隔后执行一个function,只执行一次

setInterval(function,毫秒值) :在一定的时间间隔后执行一个function,循环执行

setTimeout(function (){
    alert("hehe");
},3000);
setInterval(function (){
    alert("hehe");
},2000);

  2.History对象

History 对象是 JavaScript 对历史记录进行封装的对象。

  • History 对象的获取

    使用 window.history获取,其中window. 可以省略

  • History 对象的函数
    在这里插入图片描述

  3.获取Location对象

Location对象提供了很对属性。以后常用的只有一个属性 href
在这里插入图片描述

alert("要跳转了");
location.href = "https://www.baidu.com";

5.DOM

DOM:Document Object Model 文档对象模型。也就是 JavaScript 将 HTML 文档的各个组成部分封装为对象。
DOM 其实我们并不陌生,之前在学习 XML 就接触过,只不过 XML 文档中的标签需要我们写代码解析,而 HTML 文档是浏览器解析。封装的对象分为

  • Document:整个文档对象
  • Element:元素对象
  • Attribute:属性对象
  • Text:文本对象
  • Comment:注释对象

如下图,左边是 HTML 文档内容,右边是 DOM 树

在这里插入图片描述
作用:

JavaScript 通过 DOM, 就能够对 HTML进行操作了

  • 改变 HTML 元素的内容
  • 改变 HTML 元素的样式(CSS)
  • 对 HTML DOM 事件作出反应
  • 添加和删除 HTML 元素

  1.获取Element对象

HTML 中的 Element 对象可以通过 Document 对象获取,而 Document 对象是通过 window 对象获取。

Document 对象中提供了以下获取 Element 元素对象的函数

  • getElementById():根据id属性值获取,返回单个Element对象
  • getElementsByTagName():根据标签名称获取,返回Element对象数组
  • getElementsByName():根据name属性值获取,返回Element对象数组
  • getElementsByClassName():根据class属性值获取,返回Element对象数组
  • querySelector:返回指定选择器中的第一个元素 可以使用 . ,# , 标签名 (H5)
  • querySelectorAll 返回指定选择器中的所有元素 。 如上 (H5)
var divs = document.getElementsByTagName("div");// 返回一个数组,数组中存储的是 div 元素对象
// alert(divs.length);  //输出 数组的长度
//遍历数组
for (let i = 0; i < divs.length; i++) {
    alert(divs[i]);
}
divs.onClick=function(){

}

其中可以获得body元素和Html元素

document.documentElement
document.body

  2.HTML Element对象使用

查阅文档使用
在这里插入图片描述

6.DOM各个标签的学习

  1.innerText 和 innerHTML的区别

  1. innerText 不识别html标签 非标准 去除空格和换行 ----只会获得里面的内容。
  2. innerHTML 识别html标签 W3C标准 保留空格和换行的 ------会获得包含Html的标签。

这两个属性是可读写的 可以获取元素里面的内容

 innerText 和 innerHTML的区别 
        // 1. innerText 不识别html标签 非标准  去除空格和换行
        var div = document.querySelector('div');
        // div.innerText = '<strong>今天是:</strong> 2019';
        // 2. innerHTML 识别html标签 W3C标准 保留空格和换行的
        div.innerHTML = '<strong>今天是:</strong> 2019';
        // 这两个属性是可读写的  可以获取元素里面的内容
        var p = document.querySelector('p');
        console.log(p.innerText);
        console.log(p.innerHTML);

  2.修改表单属性

  1. 需要使用value属性 不能使用innerHtml
  2. disable
修改input的值  
var butt=document.querySelector('button');
butt.value=‘123456’

6.事件监听

  • 方式一:通过 HTML标签中的事件属性进行绑定

<input type=“button” οnclick='on()’>
function on(){
alert(“我被点了”);
}

  • 方式二:通过 DOM 元素属性绑定

<input type=“button” id=xxx’>
document.getElementById(“btn”).onclick = function (){
alert(“我被点了”);
}

在这里插入图片描述

7.正则表达式

正则对象有两种创建方式:

  • 直接量方式:注意不要加引号

var reg = /正则表达式/;

  • 创建 RegExp 对象

var reg = new RegExp(“正则表达式”);

函数
test(str) :判断指定字符串是否符合规则,返回 true或 false

正则表达式是和语言无关的。很多语言都支持正则表达式,Java语言也支持,只不过正则表达式在不同的语言中的使用方式不同,js 中需要使用正则对象来使用正则表达式。

1.正则表达式常用的规则如下:

  • ^:表示开始
  • $:表示结束
  • [ ]:代表某个范围内的单个字符,比如: [0-9] 单个数字字符
  • .:代表任意单个字符,除了换行和行结束符
  • \w:代表单词字符:字母、数字、下划线(),相当于 [A-Za-z0-9]
  • \d:代表数字字符: 相当于 [0-9]

2.量词:

  • +:至少一个
  • *:零个或多个
  • ?:零个或一个
  • {x}:x个
  • {m,}:至少m个
  • {m,n}:至少m个,最多n个
// 规则:单词字符,6~12
//1,创建正则对象,对正则表达式进行封装
var reg = /^\w{6,12}$/;

var str = "abcccc";
//2,判断 str 字符串是否符合 reg 封装的正则表达式的规则
var flag = reg.test(str);
alert(flag);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值