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
,另一个是XML
XML
体积较大,解析麻烦,但是有其优点是:语法严谨。(通常银行相关的系统之间进行数据交换的话会使用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 协议 ,转载请注明出处!