js复习笔记day3
来源:互联网 发布:java转义字符 编辑:程序博客网 时间:2024/06/10 01:51
自动转换类型
5 + null // 返回 5 null 转换为 0"5" + null // 返回"5null" null 转换为 "null""5" + 1 // 返回 "51" 1 转换为 "1" "5" - 1 // 返回 4 "5" 转换为 5
JavaScript 正则表达式
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索和文本替换
使用字符串方法
在 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 错误 - throw、try和 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; // 初始化 xvar y = 7; // 初始化 y不会var x; // 声明 xx = 5; // 变量 x 设置为 5
要理解以上实例就需要理解 "hoisting(变量提升)"。
变量提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。
JavaScript 严格模式(use strict)
JavaScript 严格模式(strict mode)即在严格的条件下运行。
严格模式下你不能使用未声明的变量。
JavaScript 使用误区
比较运算符常见错误
var x = 10;var y = "10";if (x == y)//trueif (x === y)//false
以下实例由于类型不一致不会执行 alert 弹窗:
var x = 10;switch(x) { case "10": alert("Hello");}
加法与连接注意事项
var x = 10 + 5; // x 的结果为 15var x = 10 + "5"; // x 的结果为 "105
浮点型数据使用注意事项
JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。
所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定
var x = 0.1;var y = 0.2;var z = x + y // z 的结果为 0.3if (z == 0.3) // 返回 false
解决:
var z = (x * 10 + y * 10) / 10; // z 的结果为 0.3
JavaScript 字符串分行
JavaScript 允许我们在字符串中使用断行语句:
但是,在字符串中直接使用回车换行是会报错的:
var x = "HelloWorld!";
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 返回 0var 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;
- js复习笔记day3
- day3-笔记
- js复习笔记
- js复习笔记day1
- js复习笔记day2
- js复习笔记day4
- js复习笔记day5
- js复习笔记day6
- js复习笔记day7
- js复习笔记day8
- js复习笔记(忘记tbodies)
- JS学习day3
- 学习js的day3
- java学习笔记day3
- CCNA学习笔记Day3
- day3随堂笔记
- C#基础笔记 Day3
- 学习笔记day3
- eclipse中项目出现的红叉问题
- 数据结构之排序_java实现篇
- 小程序 —— 提交表单清除数据功能的实现
- IntelliJ Idea 2017 免费激活方法
- git .gitignore 不起作用的问题
- js复习笔记day3
- 打怪兽
- XManager使用说明
- 使用poi导出excel后,关于出现#NAME? 的问题,已解决
- Network(Kruskal)
- 希尔排序的Java实现、性能分析以及适用场景
- angular应用,一个input上有自定义directive和ng-model,怎么在directive更新input的value时更新model
- 网上总结编程技巧
- jquery table 倒计时