JavaScript基础教程之JavaScript的乐趣
沉沙 2019-05-15 来源 : 阅读 1427 评论 0

摘要:本篇文章探讨了JavaScript基础教程之JavaScript的乐趣,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇文章探讨了JavaScript基础教程之JavaScript的乐趣,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

JavaScript基础教程之JavaScript的乐趣

<


不要使用new Number()、new Boolean()、new String()创建包装对象;
用parseInt()或parseFloat()来转换任意类型到number;
用String()来转换任意类型到string,或者直接调用某个对象的toString()方法;
通常不必把任意类型转换为boolean再判断,因为可以直接写if (myVar) {...};
typeof操作符可以判断出number、boolean、string、function和undefined;
判断Array要使用Array.isArray(arr);
判断null请使用myVar === null;
判断某个全局变量是否存在用typeof window.myVar === ‘undefined‘;
函数内部判断某个变量是否存在用typeof myVar === ‘undefined‘。
1 123.toString(); // SyntaxError
123..toString(); // ‘123‘, 注意是两个点!
(123).toString(); // ‘123‘
2、对于date对象,一个坑爹的地方是JavaScript的月份范围用整数表示是0~11,0表示一月,1表示二月……,所以要表示6月,我们传入的是5!
1 var today = new Date();
2 if (today.getMonth() === 2 && today.getDate() === 14) {
3     alert(‘亲爱的,我预定了晚餐,晚上6点在餐厅见!‘);
4 }
以上代码,真是注孤生的节奏啊......因为这匹配的是3月14号(坑无处不在)。
3、RegExp(正则表达式)
‘00\d‘可以匹配‘007‘,但无法匹配‘00A‘;
‘\d\d\d‘可以匹配‘010‘;
‘\w\w‘可以匹配‘js‘;
.可以匹配任意字符,所以:
‘js.‘可以匹配‘jsp‘、‘jss‘、‘js!‘
要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符:
进阶:
[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;
[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如‘a100‘,‘0_Z‘,‘js2015‘等等;
[a-zA-Z\_\$][0-9a-zA-Z\_\$]*可以匹配由字母或下划线、$开头,后接任意个由一个数字、字母或者下划线、$组成的字符串,也就是JavaScript允许的变量名;
[a-zA-Z\_\$][0-9a-zA-Z\_\$]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。
A|B可以匹配A或B,所以(J|j)ava(S|s)cript可以匹配‘JavaScript‘、‘Javascript‘、‘javaScript‘或者‘javascript‘。
^表示行的开头,^\d表示必须以数字开头。
$表示行的结束,\d$表示必须以数字结束。
你可能注意到了,js也可以匹配‘jsp‘,但是加上^js$就变成了整行匹配,就只能匹配‘js‘了。
1 var re1 = /ABC\-001/;
2 var re2 = new RegExp(‘ABC\\-001‘);
3
4 re1; // /ABC\-001/
5 re2; // /ABC\-001/
RegExp对象的test()方法用于测试给定的字符串是否符合条件
1 var re = /^\d{3}\-\d{3,8}$/;
2 re.test(‘010-12345‘); // true
3 re.test(‘010-1234x‘); // false
4 re.test(‘010 12345‘); // false
切分字符串:
1 ‘a,b;; c  d‘.split(/[\s\,\;]+/); // [‘a‘, ‘b‘, ‘c‘, ‘d‘]
分组、贪婪匹配、全局匹配与搜索
a.^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码
  exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。
  exec()方法在匹配失败时返回null。
1 var re = /^(\d{3})-(\d{3,8})$/;
2 re.exec(‘010-12345‘); // [‘010-12345‘, ‘010‘, ‘12345‘]
3 re.exec(‘010 12345‘); // null
b.正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符
1 var re = /^(\d+)(0*)$/;
2 re.exec(‘102300‘); // [‘102300‘, ‘102300‘, ‘‘]
让\d+采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0匹配出来,加个?就可以让\d+采用非贪婪匹配
1 var re = /^(\d+?)(0*)$/;
2 re.exec(‘102300‘); // [‘102300‘, ‘1023‘, ‘00‘]
c.JavaScript的正则表达式还有几个特殊的标志,最常用的是g,表示全局匹配,全局匹配可以多次执行exec()方法来搜索一个匹配的字符串。当我们指定g标志后,每次运行exec(),正则表达式本身会更新lastIndex属性,表示上次匹配到的最后索引
 1 var s = ‘JavaScript, VBScript, JScript and ECMAScript‘;
 2 var re=/[a-zA-Z]+Script/g;
 3
 4 // 使用全局匹配:
 5 re.exec(s); // [‘JavaScript‘]
 6 re.lastIndex; // 10
 7
 8 re.exec(s); // [‘VBScript‘]
 9 re.lastIndex; // 20
10
11 re.exec(s); // [‘JScript‘]
12 re.lastIndex; // 29
13
14 re.exec(s); // [‘ECMAScript‘]
15 re.lastIndex; // 44
16
17 re.exec(s); // null,直到结束仍没有匹配到
正则表达式还可以指定i标志,表示忽略大小写,m标志,表示执行多行匹配
例:匹配email地址:
 1 var re = /^[\da-zA-Z]+([._-]\w+)*@([\da-zA-Z]+\.)+[a-zA-Z]{2,6}$/;
 2
 3 var re = /^<(.+?)>\s*([\da-zA-Z]+[._-]?\w+@[\da-zA-Z]+\.[a-zA-Z]{2,6})$/; //分组得到email地址的部分内容
 4
 5 //测试部分:
 6 // 测试:
 7 var r = re.exec(‘<Tom Paris> tom@voyager.org‘);
 8 if (r === null || r.toString() !== [‘<Tom Paris> tom@voyager.org‘, ‘Tom Paris‘, ‘tom@voyager.org‘].toString()) {
 9     alert(‘测试失败!‘);
10 }
11 else {
12     alert(‘测试成功!‘);
13 }
   

      本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved