You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
function parseUrl(url) {
var result = {};
var keys = ['href', 'origin', 'protocol', 'host',
'hostname', 'port', 'pathname', 'search', 'hash'];
var i, len;
var regexp = /(([^:]+:)\/\/(([^:\/\?#]+)(:\d+)?))(\/[^?#]*)?(\?[^#]*)?(#.*)?/;
var match = regexp.exec(url);
console.info('match=', match);
if (match) {
for (i = keys.length - 1; i >= 0; --i) {
result[keys[i]] = match[i] ? match[i] : '';
}
}
console.info('result=', result);
return result;
}
语法和API
理解ECMAScript和JavaScript的关系
完整的JavaScript实现应该由三部分组成:
ECMAScript只是定义了基础的语法和语义的标准,跟具体的浏览器环境没有关系。也就是说,ECMAScript来源于JavaScript,又反向作为JavaScript的标准。
熟练应用map、reduce、filter 等高阶函数解决问题
map
reduce
例子:
filter
thisArg
值,在非严格模式下this
是全局对象,严格模式下为undefined
setInterval需要注意的点,使用setTimeout实现setInterval
setInterval的注意点
setInterval
并不考虑任务执行本身所消耗的时间,例如,如果指定每100ms执行一次,每次执行需要5ms,那么第一次执行结束后95ms,第二次执行就会开始,也就是说这个时间间隔小于设定的时间。如果执行任务长时间不执行完,超过了间隔时间,那么在执行完任务的时候,就会跳过时间间隔又立即执行任务。使用setTimeout实现setInterval
JavaScript提供的正则表达式API、可以使用正则表达式(邮箱校验、URL解析、去重等)解决常见问题
JS提供的正则表达式
创建正则表达式有两种方式:
const reg = /ab+c/
或者const reg = new RegExp('ab+c')
方法:
exec
null
)test
true
或false
match
String
方法,它返回一个数组,在未匹配到时会返回null
matchAll
String
方法,它返回一个迭代器(iterator)search
replace
split
String
方法常用的正则表达式
邮箱校验
参考:https://juejin.im/post/5aa637146fb9a028d663d09d
URL解析
解析一个完整的url,返回Object包含域与
window.location
相同一个
window.location
包含的内容:答案:
参考:https://juejin.im/post/5aab72fd518825188038af9b
去重
单行去重:
参考:https://www.cnblogs.com/xxcanghai/p/5178177.html
JavaScript异常处理的方式,统一的异常处理方案
try-catch
window.onerror
return true
才能阻止异常向上抛出,否则即使知道异常的发生控制台还是会显示Uncaught Error: xxxxx
window.addEventListener
event
接口的error
事件,并执行该元素上的onerror()
处理函数,这些error
事件不会向上冒泡到window,但(至少在Firefox)能被单一的window.addEventListener
捕获Promise Catch
catch
的Promise
中抛出的错误无法被onerror
和try-catch
捕获到unhandledrejection
的监听,用来全局监听Uncaught Promise Error
。如果要去掉控制台的异常显示,需要添加event.preventDefault()
监控网页崩溃
window
对象的load
和beforeload
错误上报
Ajax
发送数据,但其本身也有可能发生异常,而且可能有跨域问题img
标签The text was updated successfully, but these errors were encountered: