JavaScript笔记
JavaScript
JavaScript包括三块:ECMAScript、DOM、BOM
- ECMAScript是ECMA指定的262标准,是JavaScript核心语法
- DOM编程是通过JavaScript对HTML中的dom节点进行操作,DOM是有规范的,DOM规范是W3C制定的。
- BOM编程是对浏览器本身操作,例如:前进、后退、地址栏、关闭窗口、弹窗等。由于浏览器有不同的厂家制造,所以BOM缺少规范,一般只是有一个默认的行业规范。
JS是一门事件驱动型的编程语言,依靠事件去驱动,然后执行对应的程序。在JS中有很多事件,并且任何事件都会对应一个事件句柄。【注意:事件和事件句柄的区别是:事件句柄是在事件单词前添加一个on】。而事件句柄是以HTML标签的属性存在的。
1. JS中的数据类型
- 原始类型:
Undefined、Number、String、Boolean、Null - 引用类型:
Object以及Object的子类 - ES规范(ESMAScript),在ES6之后,又基于以上的6中类型之外添加了一种新的类型:
Symbol - JS中有一个运算符叫做
typeof,这个运算符可以在程序的运行阶段动态的获取变量的数据类型。- typeof 变量名
- 运算结果是以下6个字符串之一,注意字符串都是全部小写:
undefined、number、string、boolean、object、function
- 在JS当中比较字符串是否相等使用
==完成,没有equals
1.1 Undefined
Undefined类型只有一个值,这个值就是undefined,当一个变量没有手动赋值,系统默认赋值undefined,或者也可以给一个变量手动赋值undefined。
1.2 Number
- Number类型包括哪些值?(整数、小数、正数、负数、NaN、Infinity都属于Number类型)
- 运算结果本来应该是一个数字,最后算完不是一个数字的时候,结果是
NaN 关于
isNaN函数,用法:isNaN(数据)。结果是true表示不是一个数字,结果是false表示是一个数字。parseInt()函数:将字符串自动转换为数字,并且取整数位。parseFloat()函数:将字符串自动转换为数字。Math.ceil()函数(Math是数学类,数学类当中有一个函数叫做ceil(),作用是向上取整)
1.3 Boolean
- 在
Boolean类型中有一个函数叫做:Boolean(数据)。作用是将非布尔类型转换成布尔类型,“有”就转换成true,“没有”就转换成false。
1.3 String
- 创建字符串对象的两种方式
var s = "abc";小string(属于原始类型String)。- 使用
JS内置的支持类String,var s2 = new String("abc");。需要注意:String是一个内置的类,可以直接用,String的父类是Object。大String(属于Object类型) - 无论大小String,属性和函数都是通用的。
- 关于
String常用的属性和函数:- 常用属性:
length属性 - 常用函数:
indexOf、lastIndexOf、replace、substr、substring、toLowerCase、toUpperCase、split - 子字符串的两个函数的区别:
substr(startIndex, length)和substring(startIndex, endIndex) 注意:不包含endIndex
- 常用属性:
1.4 Object
prototype属性:作用是给类动态的扩展属性和函数 。在
JS中如何定义类,怎么new对象?- 定义类的语法:
// 第一种方式: function 类名(形参) { } // 第二种方式: 类名 = function(形参) { }- 创建对象的语法:
new 构造方法名(实参); // 构造方法和类名一致在
JS中类的定义和构造函数的定义是放在一起来完成的,JS中的类的定义,同时又是一个构造函数的定义
2. null NaN undefined这个三个值有什么区别
- 数据类型不一致。
typeof null == "object"、typeof NaN == "number"、typeof undefine == "undefined"null == NaN; // false、null == undefined; // true、undefined == NaN; // false==(等同运算符:只判断值是否相等);===(全等运算符:既判断值是否相等,又判断数据类型是否相等)
3. JS中的常用事件
blur:失去焦点;focus:获得焦点click:鼠标单击;dblclick:鼠标双击keydown:键盘按下;keyup:键盘弹起mousedown:鼠标按下;mouseover:鼠标经过;mousemove:鼠标移动;mouseout:鼠标离开;mouseup:鼠标弹起reset:表单重置;submit:表单提交change:下拉列表选中项改变,或文本框内容改变select:文本被锁定load:页面加载完毕(整个HTML页面中所有的元素全部加载完毕之后发生)
回调函数的特点:自己把这个函数代码写出来了,但是这个函数不是自己负责调用,由其他程序负责调用该函数
4. 正则表达式
正则表达式(Regular Expression)主要用在字符串格式匹配方面。
- 常见的正则表达式符号
| 代码 | 说明 |
|---|---|
| . | 匹配除换行符以外的任意字符 |
| \w | 匹配字母或数字或下划线或汉字 |
| \s | 匹配任意的空白符 |
| \d | 匹配数字 |
| \b | 匹配单词的开始或结束 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的结束 |
| 重复 | |
| * | 重复零次或更多次 |
| + | 重复一次或更多次 |
| ? | 重复零次或一次 |
| {n} | 重复n次 |
| {n,} | 重复n次或更多次 |
| {n,m} | 重复n到m次 |
| 反义 | |
| \W | 匹配任意不是字母,数字,下划线,汉字的字符 |
| \S | 匹配任意不是空白符的字符 |
| \D | 匹配任意非数字的字符 |
| \B | 匹配不是单词开头或结束的位置 |
| x | 匹配除了x以外的任意字符 |
| aeiou | 匹配除了aeiou这个急字母以外的任意字符 |
- 创建正则表达式对象及调用
// 第一种创建方式
var regExp = /正则表达式/flags;
// 第二种创建方式:使用内置支持类RegExp
var regExp = new RegExp("正则表达式", "flags");
/*
g关于flags:
g:全局匹配
i:忽略大小写
m:多行搜索(ES规范制定之后才支持m)。当前面是正则表达式的时候,m不能用。只有前面是普通字符串的时候,m才可以使用
正则表达式对象的test()方法?
true / false = 正则表达式对象.test(用户填写的字符串)
true : 字符串格式匹配成功
false: 字符从格式匹配失败
*/
5. 总结,有哪些方法可以通过浏览器往服务器发请求?
- 表单form的提交
- 超链接
- document.location
- window.location
- window.open(“url”)
- 直接在浏览器地址栏上输入URL,然后回车
以上所有的请求方式均可以携带数据给服务器,只有通过表单提交的数据才是动态的。
6. JSON
JavaScript Object Notation,简称JSON(数据交换格式)。是一种标准的数据交换格式。(目前非常流行,90%以上的系统,系统A与系统B交换数据的话,都是采用JSON)JSON是一种标准的轻量级的数据交换格式。特点是:体积小、易解析在实际的开发中有两种数据交换格式,使用最多,其一是
JSON,另一个是XMLXML体积较大,解析麻烦,但是有其优点是:语法严谨。(通常银行相关的系统之间进行数据交换的话会使用XML)JSON的分类:
- json对象,
JSONObject,这种对象的格式为,名称:值,也可以看做是key:value格式。 - json数组,
JSONArray,基本格式[{….}, {….}, ….]
- json对象,
JSON语法格式:var jsonObj = { "属性名" : 属性值, "属性名" : 属性值, "属性名" : 属性值, "属性名" : 属性值, ... };eval()函数的作用:将字符串当作一段JS代码解释并执行。可以使用
eval函数,将JSON格式的字符串转换成JSON对象。在JS当中,
[]和{}有什么区别?- java中的数组:
int[] arr = {1, 2, 3, 4, 5}; - JS中的数组:
var arr = [1, 2, 3, 4, 5]; - JSON:
var jsonObj = {"email" : "zhangsan@123.com", "age" : 25};
- java中的数组:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!