JavaScript从入门到精通(第二版) 基础知识总结

本文概述了JavaScript的基础知识,包括设置脚本语言、脚本执行顺序、数据类型及其操作、流程控制、函数定义与调用、对象与数组、字符串与数值处理、正则表达式,以及程序调试与错误处理。通过实例演示,深入浅出地介绍了核心概念和实用技巧。
摘要由CSDN通过智能技术生成


基础知识总结。

一到八章节都是些基础知识,相比较”书籍:javascript+dom编程与艺术.pdf“讲的要细致点。
对它的总结可以看下这里 https://blog.csdn.net/weixin_53370274/article/details/121238740

一、基础

  • language 设置所使用的脚本语言及版本
  • src 设置一个外部脚本文件的路径链接
  • type 设置所使用的脚本语言,此属性已代替language属性
  • defer 此属性表示当html文档加载完毕后再执行脚本语言
    设置后,浏览器不必等待脚本语言装载,这样页面加载会更快。
    但当有一些脚本需要在页面加载过程中或加载完成后立即执行时,
    就不需要使用defer属性。
  • 通过 "javascript:"的方式来调用javascript的函数或方法
<a href="javascript:alert('click this link')">click</a>
  • 与事件结合使用
<button onclick="alert('click')">click</button>

javascript程序按照在html文件中出现的顺序逐行执行。如果需要在整个html文件中执行(如函数、全局变量等),最好将其放在html文件的<head>...</head>标记中。javascript大小写敏感,与html标签不同。在js中会忽略程序中的空格、换行和制表符,除非这些符号是字符串或正则表达式中的一部分。因此,可以在程序中随意使用这些特殊符号来进行排版,让代码更易阅读理解。js中换行能判断一个语句是否已经结束。
a=100
return false
这表示两个不同的语句。每行结尾的分号(;)可有可无。
注释//及/**/

二、数据类型

参考 https://blog.csdn.net/weixin_53370274/article/details/117876538
常量const及变量区分大小写。

  • 关键字
abstractcontinutefinallyinstanceofprivatethis
booleandefaultfloatintpublicthrow
breakdoforinterfacereturntypeof
typedoublefunctionlongshorttrue
caseelsegotonativestaticvar
catchextendsimplementsnewsupervoid
charfalseimportnullswitchwhile
classfinalinpackagesynchronizedwith
  • 变量声明
    var a,b,c;
    var i = 1,j = 2,k = 3;
  • 比较运行算
    == 等于根据表面值进行判断,不涉及数据类型。“17”==17 true
    === 绝对比较根据表面值和数据类型。“17”===17 false
    != !===同样的区别
    // >>>增0右移
  • typeof运算符用
    于返回它的操作数据当前所容纳的数据的类型。这对于判断一个变量是否已经被定义特别有用。
    var a = 3;
    var b = “name”;
    var c = null;
    typeof(a) int
    typeof(b) string
    typeof© object
    typeof返回值有6种可能:number string boolean object function undefined
  • new运算符
    通过new运行符来创建一个新对象。
    new construction[(arguments)]
    var object1 = new Object;
    var Array2 = new Array();
    var Date3 = new Date(“20201111”);
  • 数据类型转换规则
    js是一种无类型语言,在变量声明时无须指定数据类型。
    在代码执行过程中,js会根据需要进行自动类型转换,但是转换时也要遵循一定的规则。
  • 《转换为数值型数据》
类型转换后的结果
undefinedNaN
null0
逻辑型true:1 false:0
字符串类型若内容为数字,则结果为相应的数字,否则为NaN
其他对象NaN
  • 《转换为逻辑型数据》
类型转换后的结果
undefinedfalse
nullfalse
数值型0或NaN结果为false;否则为true
字符串类型若长度为0,结果为false;否则为true
其它对象true
  • 《转换为字符串型数据》
类型转换后的结果
undefined“undefined”
null“NaN”
数值型Nan 0或与数值相对应的字符串
逻辑型若为true,结果为"true";false结果为"false"
其它对象若存在,其结果为toString()方法的值,否则结果为"undefined"

三、流程控制

都差不多
if else
if elseif else
switch
while
do…while
for
continute
break

四、函数

 function functionname([parameter1,parameter2,...]){
	statements;
	[return expression;]
}
functionname必选项,parameter1可选项,statements必选项,expression可选项,用于返回函数值。
函数定义后不会自动执行,跟其它语言一样,需要我们在某个地方来调用。函数定义通常放在<head>中,执行通常放在<body>中。

  • 1 函数简单调用
<html>
	<head>
		<script type="text/javascript">
		function functionName(parameters){//定义函数
			some statments;
		}
		</script>
	</head>
	<body>
	functionName(parameters);//调用函数
	</body>
</html>
  • 2 在事件响应中调用函数
function test(){
		alert("hello js");
	}
	<form action="" method="post" name="form1">
		<input type="button" value="submit" onclick="test();">
	</form>
  • 3 通过超链接调用函数
<a href="javascript:test();">test</a>

<script type="text/javascript">
function getValue(num1,num2){
	return (num1+num2)/2;
}
</script>

<body>
document.write(getValue(10,20));
</body>
  • 4 嵌套函数
    在函数内部再定义一个函数,优点在于可使内部函数轻松获得外部函数的参数以及函数的全局变量等。
语法
<script type="text/javascript">
var outer=10;
function functionName(parameter1,parameters2){
	function innerFunction(){
		somestatments;
	}
}
</script>

<script type="text/javascript">
var outer=20;
function add(number1,number2){
	function innerAdd(){
		alter (number1+number2+outer);
	}
	return innerAdd();
}
</script>

<body>
<script type="text/javascript">
add(10,20);//50
</script>
</body>
  • 5 使用函数返回值
<script type="text/javascript">
	function functionName(parameers){
		var results = somestatements;
		return results;
	}
</script>
  • 6 递归函数
    自己调自己
function functionName(parameter1){
	functionName(parameters2);
}

function f(num){
	if(num<=1)
		return 1;
	else 
		return f(num-1)*num;
}

alert(f(10));
  • 7 js中内置函数 js自身提供的
    eval 求字符串中表达式的值
    isFinite() 一个数值是否为无穷大
    isNaN() 一个数值是否为NaN
    parseInt() 将字符型转换为整形
    parseFloat() 转为浮点型
    encodeURI() 将字符串转换为有效的URL
    encodeURIComponent() 将字符串转为有效的URL组件
    decodeURI() 对encodeURI()编码的文本进行解码
    decoreURIComponent() 对encodeURIComponent()编码的文本进行解码

parseInt(stingnum,n)如果字符串不是以数字开头,则转换为NaN。
n提供2~36之间的数字表示所保存数字的进制数。这个参数在函数中不是必需的
parseFloat同上。

  • 8 Function()构造函数与函数直接量
    除了基本的function语句定义函数之外,还可使用另外两种方式来定义,即使用Function()构造函数和函数直接量定义。两者存在很重要的差别。
  • 构造函数Function()允许在运行时动态创建和编译js代码,而函数直接量却是程序结构一个静态部分,就像函数语句一样。
  • 每次调用构造函数Function()时都会解析函数体,并且创建一个新的函数对象。
    如果对构造函数的调用出现在一个循环中,或者出现在一个经常被调用的函数中,这种方法的效率将非常低。而函数直接量不论出现在循环体还是嵌套函数中,即不会在每次调用时都被重新编译,也不会在每次遇到时都创建一个新的函数对象。
  • Function()创建的函数使用的不是静态作用域,相反地,该函数总是被当作顶级函数来编译。
 //屏蔽页面鼠标键盘事件
 function maskingKeyBoard(){
	if(event.keyCode==8){
		event.keyCode=0;
		event.returnValue=false;
		alert("当前不允许使用backspace键");
	}
	/*
	13  enter 
	116 f5
	ctrl+n event.ctrlKey&&event.keyCode==78
	alter+方向键
	*/
	if(event.altKey&&(window.event.keyCode==37 || window.event.keyCode==39))		{
	event.returnValue=false;
}	
}

//鼠标右键单机
function rightKey(){
	if(event.keyCode==2)
		event.returnValue=false;
}
<body onkeydown="maskingKeyBoard()">
document.onmousedown=rightKey();

五、js对象与数组

js中的内部对象按使用方式可分为动态对象和静态对象。 在引用动态对象的属性和方法时,必须使用new关键字来创建一个对象实例,然后才能使用"对象实例名.成员"的方式来访问基属性和方法。引用静态对象的属性和方法时,不需要用new
关键字创建对象实例,直接使用“对象名.成员"的方式来访问其属性和方法即可。

  • object对象
    var obj = new Object([value]);
    value:可选项任一种js基本数据类型 number boolean string 。如果value为一个对象,返回不做改动的该对象。如果valule为null或undefined,或者没有给出,则产生没有内容的对象。
  • object对象的属性
    objectName.prototype
    如求array对象中某元素的最大值
function array_max(){
	var i,max=this[0];
	for(i=1;i<this.length;i++){
		if(max<this[i])
			max= this[i];
	}
	return max;
}
Array.prototype.max=array_max;
var x = new Array(1,2,3,4,5,6);
var y = x.max();//6 

constructor属性
x = new String("js")
if(x.constructor==String)//true 
或
function MyFunc{
	
}
y = new MyFunc;
if(y.constructor==MyFunc) //true
  • toLocaleString() 返回一个日期
    该日期使用当前区域设置并已被转换为字符串。
    dateObj.toLocaleString()
    objectname.toString([radix])//radix转换为字符串时的进制
  • toString()方法的对象及相应操作
对象操作
Array将Array的元素转换为字符串。结果字符串由逗号分隔,且连接起来。
Booleantrue则回true;false为false
Date返回日期的文字表示法
Erro返回一个包含相关错误消息的字符串
Function返回如下格式的字符串,其中functionname是被调用toString()方法函数的名称: function functionname(){native code}
Number返回数字的文字表示
String返回String对象的值
默认返回[object objectname],其中objectname是对象类型的名称
  • valueOf方法
    valueOf()方法返回指定对象的原始值
    object.valueOf()
    var x = new Number(“123”);
    x.valueOf();//123
  • JavaScript固有对象的valueOf()方法定义
对象返回值
Array数组的元素被转换为字符串,这些字符中由逗号分隔,并连接在一起。其操作与Array.toString()和Array.join方法相同
Booleanboolean值
Date1970年1月1日午夜开始计的毫秒数
Function函数本身
Number数字值
Object对象本身。这是默认情况
String字符串值
  • String对象
    String对象用于操作和处理文本串,可以通过该对象在程序中获取字符串长度、提取子字符串,以及将字符串转换为大写或小写字符。
    String对象是动态对象,需要创建对象实例后才能引用该对象的属性和方法,该对象主要用于处理或格式化文本字符串以及确定和
    定位字符串中的子字符串。
    var str = new String(“欢迎使用javascript”);
    字符串和String对象的不同在于返回的typeof值,前者返回的是String类型,后者返回的是Object类型。
String对象的属性有length、constructor和prototype。
var str = new String("javascript");
str.length     //10
str.constructor==String  //true

constroctor属性用于对当前对象的函数的引用。可以判断当前对象或自定义变量的类型。
比如:可以利用constructor属性获取当前对象fred所引用的函数代码

function getyear(name,year)
{
	this.name=name;
	this.year = year;
}
var fred = new getyear("year","2021");
altert(fred.constructor);
结果:

在这里插入图片描述
str.prototype
prototype属性可以为对象添加属性和方法。
object.prototype.name = value;
object:对象名或变量字符变量名,name:要添加的属性或方法名,value为要添加的值。
在这里插入图片描述

  • Date对象
var date = new Date();
date = new Date(dateValu);
date = new Date(year,month,date[,hours[,minutes[,seconds[,ms[[[[)
date 1-31 
hours 0-23
minutes 0-59
seconds 0-59
ms 0-999
constructor prototype 
var newDate=new Date();
newDate.constructor==Date  //true 
date对象的方法
Date() 
getDate()
getDay()
getMonth()
getFullYear()
getYear()
getHours()
getMintes()
getSeconds()
getMilliseconds()
getTime()
getTimezoneOffset()
getUTCDate()
getUTCDay()
getUTCMonth()
getUTCFullYear()
getUTCHours()
getUTCSeconds()
getUTCMilliseconds()
parse()
setDate()
setMoneth()
setFullYear()
setYear()
setHours()
setMinutes()
setSeconds()
setMilliseconds()
setTime()
setUTCDate()
setUTCMoneth()
setUTCFullYear()
setUTCHours()
setUTCMinutes()
setUCSecond()
setUTCMilliseconds()
toSource()
toString()
toTimeString()
toDateString()
toGMTString()
toLocaleString()
toLocalTimeString()
toLocalDateString()
UTC()
valueOf()

  • event对象
    event对象用来描述javascript事件,代表事件状态,如事件发生的元素,键盘元素、鼠标位置鼠标按钮状态。一旦事件发生,便会生成event对象,如单击一个按钮,浏览器的内存中就会产生相应的event对象。
window.event
event.propertyName
比如给元素加事件
document.getElementById("myButton").addEventListener("KeyUp",example,false);
  • event 对象的属性
    altKey设置或获取Alt键的状态。检索左Alt键的当前状态,返回值true表示关闭,false表示不关闭。
window.event.ctrlKey
ctrlKey ctrl键状态
shiftKey
  • button属性

button属性设置或获取事件发生时用户所按的鼠标键
window.event.button

nvnv
0 没有按钮4 按下中间键
1 左键5 同时按下左键和中间键
2 右键6 同时按下右键和中间键
3 同时按下左右键7 同时按下左中右键

button属性仅用onmousedown onmouseup onmousemove事件,对于其他同事,无论鼠标状态如何都返回0。如onclick
上网的时候我们可以按下鼠标右键进行一些操作

<script>
function gosite(){
	if(event.button==2)
	{		alert("javascript");
			window.open("www.csdn.com");
			return false;
	}
}
document.onmousedown=gosite;
</script>
  • clientX属性
    获取鼠标在浏览器窗口中的X坐标,是个只读属性,即只能获取鼠标的当前位置,不能改变鼠标的位置。
 window.event.clientX
  • clientY 同上 window.event.clientY
  • X属性 Y属性
    X属性设置或获取鼠标指针位置相对于css属性中有position属性的上级元素的X轴坐标。如果css属性中没有position属性的上级元素,默认以body元素作为参考。
    语法:window.event.X
    如果鼠标事件触发后,鼠标指针移出窗口外,则返回值-1。这是一个只读属性,只能通过它获取鼠标的当前位置,但不能用它来更改属鼠标的位置。
    Y属性的语法和意义同X属性。
document.onmousemove 
document.onmouseup
- document.event.cancelBubble 

检测是否接受上层元素的事件的控制。如果该属性的值是false,则允许被上层元素的事件控制;否则值为true,则不被上层元素的事件控制。

  • srcElement属性
    设置或获取触发事件的对象。srcElement属性是事件初始目标的HTML元素对象引用。由于事件通过元素容器层进行处理,且可以在任何一个层次进行处理,因此由一个属性指向产生初始事件的元素是很有帮助的。
    winddow.event.srcElement获取属性方法的调用
  • FileSystemObject对象
    用来创建删除和获取有关信息
对象/集合说明
FileSystemObject主对象。用来创建 删除和获取有关信息,还可以用来操作驱动器、文件夹和文件的方法和属性
Drive对象 ,用来收集信息的方法和属性。连接在驱动器上,如Drive并非必须是硬盘,也可以是RAM磁盘。并非必须把驱动器实物地连接到系统上,它也可以通过网络在逻辑上被连接起来。
Drives集合列表。
File文件对象
Files集合
Folder目录
Folders集合
TextStream对象,用来读写文件文件
var fso = new ActiveXObject("Scripting.FileSystemObject");
object.GetAbsolutePathName(pathspec);

pathspec说明

参数说明
“c:”返回当前的完整路径
“c:…”返回当前路径的上级路径
“c:\”返回当前路径根目录
“c:.\myfile”在当前路径后加上 “*.*\myfile”
“myfile”在当前路径后加上"myfile"
“c:\…\…\myfile”返回当前路径以myfile文件名为结尾

c并非c盘,而是服务器端当前路径的盘符。
假设当前路径为d:\word\javascript
fso.GetAbsolutePathName(“d:…”)
返回结果
d:\word
GetBaseName()
GetDriveName()
GetDrive()
GetExtensionName()
GetFileName()
GetParentFolderName()
GetSpecialFolder()
WinddowFolder 值 0
SystemFolder 值 1
TemporaryFolder 值 2
GetTempName()

  • Drive对象
    负责收集系统中的物理或逻辑驱动器资源内容。如驱动器的共享名和有多少可用空间。在使用该对象时,不一定非要把驱动器实物地连接到系统上,也可以通过网络在逻辑上进行连接。
    var fso = new ActiveXObject(“Scripting.FileSystemObject”);
    var s = fso.GetDrive(“C:\”);
方法说明
FreeSpace()可用空间
IsReady是否就绪
TotalSize以字节为单位返回驱动器或网络共享的所有空间大小
DriveType驱动器类型
SerialNumber连续10进制数,用于唯一标识磁盘卷。
AvailableSpace属性 返回所指定的驱动器或网络共享上可用 的空间的大小。
FileSystem指定驱动器所使用的文件系统的类型
Path指定文件、文件夹或驱动器的路径
RootFolder指定驱动器的根文件夹。只读
ShareName指定驱动器的网络共享名
VolumeName设置或返回指定驱动器的卷名。读/写
  • File对象
    获取服务器端指定文件的相关属性。如创建、修改、访问时间,也可以对文件或文件夹进行复制、移动或删除。
    var f =object.GetFile(filespec);
    var fso =new ActiveXObject(“Scripting.FileSystemObject”);
    var s = fso.GetFile(“E:\word\qq.txt”);
方法
object.Copy(destination,overrie);
object.Delete(force);如果要删除设置了只读属性的文件或文件夹则为true。
object.Move(destination);
object.OpenAsTextStream(iomode,format);
iomode说明
ForReading只读方式
ForWriting以写方式,存在同名,以前的内容将被盖掉
ForAppending打开并从尾开始写

format如果忽略,则以ASCII格式打开。

format说明
TristateUseDefault 2使用系统默认值打开文件
TristateTrue 1以Unicode方式打开文件
TristateFalse 0以ASCII方式打开文件
常数描述
Normal0普通文件
ReadOnly1只读文件 不设置属性
Hidden2隐藏 读写
System4系统文件 读写
Volume8磁盘驱动巻标。只读
Directory16文件夹或目录 只读
Archive32文件在上次备份后已经修改。属性为读写
Alias64超链接或者快捷方式。属性为只读
Compressed128 压缩文件。属性为只读

将只读文件改为可写文件

<form name="form1" method="post" action="">
文件路径:<input type="text" name="tbFileSrc" value="E:\\1.txt">
<input type="button" name="btn" value="文件类型" onclick="ShowFileInfo(document.form1.tbFileSrc.value)"
</form>
<script language="text/javascript">
function ShowFileInfo(filespec){
	var fso,f,s;
	fso = new ActiveXObject("Scripting.FileSystemObject");
	f = fso.GetFile(filespec);
	switch(f.Attributes)
	{
		case 0:
			s="普通文件";
			break;
		case 1:
			s="只读文件";
			break;
	}
	if(f.Attributes==1||f.Attributes==33)
	{
		if(confirm("当前文件为:"+s+"\r\n是否将其改为可写文件?"))
		{
			f.Attributes = f.Attributes-1;
		}
	}
	else 
		alert("当前文件为:"+s);	
}
</script>

DateCreated属性,指定文件或文件夹的创建日期和时间,只读
DateLastAccessed
DateLastModified
Name
Size
Type
ShortName 返回短名称
Drive指定文件或文件夹所在驱动器的驱动器号,只读
ParentFolder
Path指定文件、文件夹或驱动器的路径(object总是File Folder Drive)
ShortPath 返回短路径名

  • Folder对象
    var fso = new ActiveXObject(“Scripting.FileSystemObject”);
    var s = fso.GetFolder(“E:\javascript”);
  • Folder对象的方法与属性(object.Method object.property)
    Files
    IsRootFolder
  • 对象访问语句
    for…in 与for循环十分相似,for…in语句用来遍历对象的每一个属性。每次都将属性名称作为字符串保存在变量里。
    语法
for(variable in object){
	...statement 
}
var objects = {user:"zhao",name="x"};
for(var info in objects){
	document.write(objects[info]);
}
  • with语句
    with语句被用于在访问一个对象的属性或方法时避免重复使用指定对象引用。
    with(obejct){
    statements
    }
  • Array数组
    同其它语言差不多。
var arr = new Array("a","1","2","b");
for(var i=0;i<arr.length;i++){
	document.write(arr[i].toString());
}
prototype 
Array.prototype.outAll = function(ar){
	for(var i=0;i<this.length;i++)
	{
		document.write(this[i]);
	}
}
var arr =new Array(1,2,3,4);
arr.outAll("");
  • Array对象的方法
方法说明
concact()连接两个或更多数组,并返回结果
pop()删除并返回数组的最后一个元素
push()向数组的末尾添加一个或多个元素,并返回新的长度
shift()删除并返回数组的第一个元素
splice()删除元素,并向数组添加新元素
unshift()向数组开头添加一个或多个元素,并返回新的长度
reverse()颠倒数组元素
sort()排序
slice()从某个已有的数组返回选定的元素
toSource()代表对象的源代码
toString()
toLocalString()
join()放入一个字符串,并用指定的分隔符分隔
valueOf()数组的原始值

六、字符串与数值对象处理

  • String对象的创建
    var newstr = new String(StringText);
  • 属性
    stringObject.length
    constructor属性用于对当前对象的构造函数的引用
    语法:stringObject.constructor
var newStr = new String("Hello Js");
if(newStr.constructor==String){  //true 
	
}

prototype属性 可以为字符串对象添加自定义的属性或方法

String.prototype.name = value;
String.prototype.getLength=function(){
	alert(this.length);
}
var str = new String("abc");
str.getLength();	//3 
  • 方法
    stirngObject.charAt(index);
    stringObject.indexOf(substring,startindex);//子字符串,起始索引
    stringObject.lastIndexOf()
    stringObject.slice(startindex,endindex);
    stringObject.substr(startindex,length);
    stringObject.substring(startindex,endindex);
    stringObject.toLowerCase()
    stringObject.toUpperCase()
    stringObject.concat(string1,string2,…)
    stringObject.split(seperator,limit); //limit可选,可指定返回的数组的最大长度。

在这里插入图片描述
在这里插入图片描述

  • Math对象
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • Number对象
    var numobj = new Number(value);
    var max = Number.MAX_VALUE;
    va min = Number.MIN_VALUE;
    var negative =Number.NEGATIVE_INFINITY;//负无穷大的值
    var positive = Number.POSITIVE_INFINITY;//正无穷大的值
  • Number对象的方法
    .toString(radix)
    .toLocaleString()
    .toFixed(num) 将Number对象四舍五入为指定小数位数的数字,然后转换成字符串
    在这里插入图片描述
  • toExponential()方法
    利用指数计数法计算Number对象的值,然后将其转换成字符串
    numberObject.toExponential(num)
    num必选项,规定指数计数法中的小数位数,是0-20之间的值,包含0和20。
    在这里插入图片描述
  • toPrecision()方法
    将Number对象转换为字符串,并根据不同的情况选择定点计数法或指数计数法。
    number.toPrecision(num)
    在这里插入图片描述
  • boolean对象
    boolObj = new Boolean(boolValue);
    在这里插入图片描述
    属性
    constructor
    prototype
    方法
    toString()
    valueOf()

七、正则表达式

一个正则表达式是由普通字符(a-z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
语法:/匹配对象的模式/
只需将希望查找匹配对象的模式内容放入"/"定界符之间即可。
如在字符串abcd中查找匹配模式bc。即:/bc/
之前有过个正则介绍https://blog.csdn.net/weixin_53370274/article/details/116427755
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 定位符与原义字符
    在进行数据验证时,可能使用一些定位符来限定字符出现的位置,以方便匹配。同时对于表达式中的元素,需要进行转义,使其变成原义字符才能正常显示出来。
  • 文本验证定位符
    ^用于规定匹配模式在目标字符串中出现的位置。如规定匹配模式只能出现在开头或结尾处,这样对文本格式的验证非常有用。
    "^o"与"ok"中的"o"匹配,但与"ko"中的不匹配, “^“必须 放在开头才有定位符作用。
    如果设置了RegExp对象实例的multiline属性,”^“还会与行首匹配,即与”\n"或”\r"之后的位置匹配。
    $与^相反。(匹配结尾)
var reg_expression = /^ming/;
var text= "mingrisoft";
var res = reg_expression.test(text);//true 
reg_expression=/ft$/;
text = "mssoft";
res = reg_repression.test(text);//true

用"\b"匹配一个字边界
“er\b"匹配"order to"中的"er”,但不匹配"verb”中的"er"。
用“\B"匹配非字边界
“er\B"匹配"verb”中的"er”,但不匹配"order to"中的"er"。

  • 特殊转义字符
    $ ( ) * + . [ ] ? \ / ^ P { } |
    ““的作用是将下一字符标记为特殊字符、原义字符、反向引用或八进制转义符。所以,要匹配字面意义的”\n”,需要使用"\"表示。
  • 限定符与选择匹配符
    // + * ? {n} {n,} {n,m}
    //+ 一次或多次
    /fo+/ fool fo football 匹配与f不匹配
    //* 限定前导字符出现的次数 0或多次
    /eg*/ easy ego egg "*"等效于{0,}
    //? 最多一次
    /Wil?/ Win Wilson匹配,Will不匹配
    // {n}连续出现的次数
    o{2}不能匹配job,但匹配book booook
    //{n,}至少出现n次
    o{2}不匹配job,但匹配booook
    //{n,m}出现n到m次
    o{1,3} book booook 都匹配
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • RegExp对象
    var reg = new RegExp(“pattern”[,“flags”]); //即new RegExp(" 模式 “[,” 标记 "])
    RegExp隐式构造函数,采用纯文本格式
    /pattern/[flags]
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • String对象中的模式匹配方法
    match()方法
    stringObject.match(regExp)
    匹配到返回一个数组并且更新全局RegExp对象的属性以反映匹配结果。
    匹配不到返回null。
    match()方法返回的数组有3个属性:input index lastIndex
    search()方法
    search()方法返回与正则表达式查找内容匹配的第一个子字符串的位置。
    stringOj.search(regExp)
    var s = " i’m a good boy !";
    var re = /boy/i;
    var r = s.search(re);//返回r=12;
    replace()方法
    使用表达式模式对字符串进行搜索,并对搜索到的内容用指定的字符串替换,返回一个字符串对象,包含了替换后的内容。
    replace(regexp.replaceText)
    在这里插入图片描述
  • split()方法
    split()该方法返回按照某种分割标识符将一个字符串拆分为若干子字符串时所产生的子字符串数组。
    split(seperator,[,limit])
    seperator为分隔符标识符参数,可以是多个字符或个正则表达式,并不作为返回到数组元素的一部分,参数liimt限制返回元素的个数。
<script language="text/javascript">
	var sparray = new Array();
	var str="javascript、language、asp、jsp、java";
	var regex =//;
	sparray = str.split(regex);
	for(int i=0;i<sparray.length;i++){
		document.write(sparray[i]+" ");
	} 
</script>
//javascript language aps jsp java 

八、程序调试与错误处理

try catch finally throw

程序通常有3种类型的异常,语法异常、运行时的异常、逻辑异常。
其中语法异常通常是在程序员输入一些编译器无法识别的代码后发生的;运行时的异常通常是在运行碰到一个错误时发生的,与语法异常的区别在于它不一定是javascript语言的错误引发的异常;逻辑异常往往发生在程序设计时,程序没有按照预先设计的方式运行。

  • 触发onerror事件处理异常
    触发onerror事件是最早用于处理javascript异常的机制,页面出现异常时,将触发onerror事件,该事件在window对象上触发。
    语法:
<script language="text/javascript">
window.onerror=function(){
	alert("调用的函数不存在");
	return true;
}
/*如果在onerror事件没有使用return true;语句,在弹出错误提示对话框后,浏览器的错误报告也会显示出来,为了隐藏此错误报行,函数需要返回true。
除了window对象可以触发window事件之外,图像对象也可以触发onerror事件。
document.images[0].οnerrοr=function(){
	somestatements;
	return true;
}
*/
</script>
  • 使用try catch finally 语句处理异常
//catch只能有一个catch语句,由于在js中无法指定出现异常的类型
<script language=”text/javascript">
try{
	somestatements;
}
catch(exception e){
	somestatements;
}
finally{
	somestatements;
}
</script>

在这里插入图片描述

  • error对象
    try catch finally语句中catch通常捕捉到的对象为error对象,error类是所有用于抛出异常的类的基类,类似java c#中的Exception。
    在这里插入图片描述
  • 使用throw语句抛出异常
<script language="javascript">
throw new Error("somestatements");
throw new TypeError("somesstatements");
</script>

一些调试技巧 通常就是alert(info),或是document.write(info) ,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值