JavaScript学习笔记


JS基本内容

JS简介:

JS让网页可以互动,是web编程语言

JS是事件驱动型的编程语言,依靠事件去驱动,然后执行对应的程序

事件如click,对应事件句柄为onclick。事件句柄就是在事件单词前添加一个on,事件句柄是以HTML标签的属性存在


    

上面代码中,window可以省略不写

而且需要注意的是,第一条语句后面如果换行,则不需要分号

暴露在脚本块中的程序,在页面打开时执行,自上而下


    

javascript的脚本块在一个页面当中可以出现多次,且位置也没有要求

强类型:

java是强类型语言,编译阶段,数据类型等就固定,直到最终内存释放,一直都不变

javascript是弱类型语言,没有编译阶段,一个变量可以随意赋值


    

JS函数:

方式一:function 函数名(形式参数列表){函数体}

方式二:函数名 = function(形式参数列表){函数体}

JS函数没有重载一说,如果两个函数重名,即使形参不同,后面一个函数也会覆盖前面那个函数


    

这段代码只会弹出两次hello javascript!

全局变量与局部变量:

全局变量是在函数体之外声明的变量,生命周期随着浏览器的存货

局部变量是在函数体中声明的变量,包括形参,函数执行结束,局部变量就释放


    

如果在函数中,局部变量前未加var,那么改该变量将变为全局变量

数据类型:

JS中的变量声明时不需要指定数据类型,但是赋值时,每一个数据还是有类型的

原始类型:

  • Undefined、Number、String、Boolean、Null

引用类型:

  • Object以及Object的子类

使用typeof可以在程序的运行阶段动态获取变量的数据类型,格式为:typeof 变量名,结果为一下6个字符串之一(即需要带双引号)

  • undefined、number、string、boolean、object、function

JavaScript中没有equals方法,请直接使用==


    

Undefined类型只有一个值,这个值就是undefined

常用函数

Number中常用函数:

  • isNaN(变量)
  • parseInt(变量)
  • parseFloat(变量)
  • Math.ceil(变量)

String中常用函数:

  • indexOf
  • lastIndexOf
  • replace
  • substr
  • substring
  • split

Object:

属性:

  • prototype(最常用)
  • constructor

函数:

  • toString
  • valueOf
  • toLocaleString

    

类的定义和函数定义,不能说一模一样,只能说完全一样

区别在于使用时,类使用new来创建,函数则直接调用

稍微深入

JS类中定义函数及prototype用法:


    

同时,因为new出来的String也是Object,那么String也可以通过prototype添加函数


    

比较Java和JavaScript的类的定义与创建对象

// java定义类
public class User{
    private String username;
    private String pasword;
    public User(){}
    public User(String username,String password){
        this.username = username;
        this.password = password;
    }
}

// java创建对象
User user = new User();
User user = new User("zhangsan","123");
User = function(username,password){
    this.username = username;
    this.password = password;
}
var u = new User();
var u = new User("zhangsan");
var u = new User("zhangsan","123");

双等于和三等于

双等于比较值,三等于全都比较(类型)


    

JS常用事件:

  • blur:失去焦点
  • focus:获得焦点
  • click:鼠标单击
  • dblclick:鼠标双击
  • keydown:键盘按下
  • keyup:键盘弹起
  • mousedown:鼠标按下
  • mouseover:鼠标经过
  • mouseout:鼠标离开
  • mouseup:鼠标弹起
  • reset:表单重置
  • submit:表单提交
  • change:下拉列表选中项改变,或文本框内容改变
  • load:页面加载完毕

回调函数与调用:


    
    
    
    

事件注册的集中方式:

  • 方式一:直接在html语句中加入事件
  • 方式二:html给定id,然后在script中获取id,再用id注册事件
  • 方式三:匿名函数注册事件
  • 方式四:整合起来,不用中间过程,有点像Java中的链式

    
    
    
    
    

JS执行顺序:

JS一般放在内容的后面,如果想放在内容前面,最好加上onload表示页面加载之后再执行js代码


    
    

JS修改属性值:


    
    
    

JS捕捉回车


    
    

void

void运算符执行表达式,但不返回任何结果,在超链接中可以运用上

javascript:表示后面接的是一段JavaScript代码,而不是路径

void(0)表示不返回任何结果


    
首页










































尾部
点击


数组变量

JavaScript中的数组遍历,如果使用for in语句,与Java有些不一样


    

上述输出都是数组下标,而不是数组元素

如果是对象的话,for in就变成了属性名,此时为字符串


    

DOM

ECMAScript是js基础内容,DOM是文档对象模型,对HTML中的节点进行操作;BOM是浏览器对象,对浏览器本身操作,如前进、后退、弹窗等

BOM顶级对象是window

DOM顶级对象是document,实际上BOM包括DOM

在这里插入图片描述

相互影响


    
    
    
    



innerHTML


    
    

正则表达式

正则表达式主要用于格式匹配

复习了一遍,然后也在菜鸟上又看了一遍

对于自己来说,贪婪匹配,前置约束等内容不太熟悉

反向引用

最简单最有用的应用:查找文本中两个相同的相邻单词的匹配项的能力

如:

var str = "Is is the cost of of gasoline going up up";
var patt1 = /\b([a-z]+) \1\b/ig;
document.write(str.match(patt1));

修饰符

正则表达式的标记(修饰符)用于指定额外的匹配策略

标记不写在正则表达式里,标记位于表达式之外,如上面反向引用的最后面的ig

  • i表示不区分大小写
  • g表示全局匹配
  • m表示多行匹配
  • s表示特殊字符圆点.中包含换行符\n(默认情况下的.匹配除换行符\n之外的任何字符)

JS的正则

方式一:
var regExp = /正则表达式/flags
方式二:
var regExp = new RegExp("正则表达式","flags")

邮箱验证


    
    
    
    

prototype+正则

在低版本的IE中,trim函数不能使用,这时需要通过动态扩展prototype结合正则表达式来进行重写trim函数


    

    
    


表单验证

![image-20220117184554199](C:\Users\OptiPlex 7090\AppData\Roaming\Typora\typora-user-images\image-20220117184554199.png)


    
    
注册界面
用户名:
密 码 :
确 认 :

正则表达式网上抄的,innerHTML中的内容写在head中的style里面

可以把点击按钮进行验证,改成onblur,这样条内容都会验证,而不是全部写完了再验证

复选框


    
    
    抽烟
    喝酒
    烫头

周期函数

有时候我们需要周期性执行某函数,那么此时需要用到周期函数


    
    
    

确认confirm


    
    

后退:

window.history.back()
window.history.go(-1)

网址:

window.location.href

顶级窗口

// 窗口1

    
    

// 窗口2

    

JSON

数据交换格式

eval函数


    

使用json数据


    
    

员工列表


员工编号 员工名字 员工薪资
总共0条数