js复习笔记day3

自动转换类型

5 + null    // 返回 5         null 转换为 0
"5" + null  // 返回"5null"   null 转换为 "null"
"5" + 1     // 返回 "51"      1 转换为 "1"  
"5" - 1     // 返回 4         "5" 转换为 5


JavaScript 正则表达式

正则表达式(英语:Regular Expression,在代码中常简写为regexregexpRE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

搜索模式可用于文本搜索和文本替换


使用字符串方法

JavaScript 中,正则表达式通常用于两个字符串方法 : search() replace()。

search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

var str = "Visit Runoob!"; 
var n = str.search(/Runoob/i);

使用正则表达式且不区分大小写将字符串中的 Microsoft 替换为 Runoob :

var str = document.getElementById("demo").innerHTML; 
var txt = str.replace(/microsoft/i,"Runoob");

使用 test()

test() 方法是一个正则表达式方法。

test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false

<script>
var patt1=new RegExp("a");
document.write(patt1.test("The best things in life are free"));//true
//  ==   /e/.exec("The best things in life are free!");
</script>

使用 exec()

exec() 方法是一个正则表达式方法。

exec() 方法用于检索字符串中的正则表达式的匹配。

该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null

以下实例用于搜索字符串中的字母 "e":

/e/.exec("The best things in life are free!");
例子:

/*是否带有小数*/
function    isDecimal(strValue )  {  
   var  objRegExp= /^\d+\.\d+$/;
   return  objRegExp.test(strValue);  
}  

/*校验是否中文名称组成 */
function ischina(str) {
	var reg=/^[\u4E00-\u9FA5]{2,4}$/;   /*定义验证表达式*/
	return reg.test(str);     /*进行验证*/
}

/*校验是否全由8位数字组成 */
function isStudentNo(str) {
	var reg=/^[0-9]{8}$/;   /*定义验证表达式*/
	return reg.test(str);     /*进行验证*/
}

/*校验电话码格式 */
function isTelCode(str) {
	var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
	return reg.test(str);
}

/*校验邮件地址是否合法 */
function IsEmail(str) {
	var reg=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
	return reg.test(str);
}

JavaScript 错误 - throwtry catch

try 语句测试代码块的错误。

catch 语句处理错误。

throw 语句创建自定义错误。


JavaScript 抛出(throw)错误

当错误发生时,当事情出问题时,JavaScript 引擎通常会停止,并生成一个错误消息。

描述这种情况的技术术语是:JavaScript 将抛出一个错误。


JavaScript try catch

try 语句允许我们定义执行时进行错误测试的代码块

catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块。

JavaScript 语句 try  catch 是成对出现的。

<script>
var txt="";
function message(){
	try {
		adddlert("Welcome guest!");
	}
	catch(err) {
		txt="本页有一个错误。\n\n";
		txt+="错误描述:" + err.message + "\n\n";
		txt+="点击确定继续。\n\n";
		alert(txt);
	}
}
</script>

例子2

<script>
function myFunction() {
    var message, x;
    message = document.getElementById("message");
    message.innerHTML = "";
    x = document.getElementById("demo").value;
    try { 
        if(x == "")  throw "值为空";
        if(isNaN(x)) throw "不是数字";
        x = Number(x);
        if(x < 5)    throw "太小";
        if(x > 10)   throw "太大";
    }
    catch(err) {
        message.innerHTML = "错误: " + err;
    }
}
</script>


debugger 关键字

var x = 15 * 5;
debugger;
document.getElementbyId("demo").innerHTML = x;

JavaScript 变量提升

函数及变量的声明

var x = 5; // 初始化 x
var y = 7; // 初始化 y不会

var x; // 声明 x
x = 5; // 变量 x 设置为 5

要理解以上实例就需要理解 "hoisting(变量提升)"

变量提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。


JavaScript 严格模式(use strict)

JavaScript 严格模式(strict mode)即在严格的条件下运行。

严格模式下你不能使用未声明的变量。


JavaScript 使用误区

比较运算符常见错误

var x = 10;
var y = "10";
if (x == y)//true
if (x === y)//false


以下实例由于类型不一致不会执行 alert 弹窗:

var x = 10;
switch(x) {
    case "10": alert("Hello");
}

加法与连接注意事项

var x = 10 + 5;          // x 的结果为 15
var x = 10 + "5";        // x 的结果为 "105


浮点型数据使用注意事项

JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。

所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定

var x = 0.1;
var y = 0.2;
var z = x + y            // z 的结果为 0.3
if (z == 0.3)            // 返回 false

解决:

var z = (x * 10 + y * 10) / 10;       // z 的结果为 0.3

JavaScript 字符串分行

JavaScript 允许我们在字符串中使用断行语句:

但是,在字符串中直接使用回车换行是会报错的:

var x = "Hello
World!";
var x = "Hello \
World!";//正确


Return 语句使用注意事项


function myFunction(a) {
    var
    power = 10;  
    return;       // 分号结束,返回 undefined
    a * power;
}

JavaScript 中, 对象 使用 名字作为索引。

如果你使用名字作为索引,当访问数组时,JavaScript 会把数组重新定义为标准对象。

执行这样操作后,数组的方法及属性将不能再使用,否则会产生错误:


var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
var x = person.length;         // person.length 返回 0
var y = person[0];             // person[0] 返回 undefined


Undefined 不是 Null

JavaScript 中, null 用于对象, undefined 用于变量,属性和方法。

对象只有被定义才有可能为 null,否则为 undefined

如果我们想测试对象是否存在,在对象还没定义时将会抛出一个错误。

if (typeof myObj !== "undefined" && myObj !== null)

程序块作用域

在每个代码块中 JavaScript 不会创建一个新的作用域,一般各个代码块的作用域都是全局的。

以下代码的的变量 i 返回 10,而不是 undefined

for (var i = 0; i < 10; i++) {
    // some code
}
return i;














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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值