JavaScript的解析顺序

第一阶段:编译期

  • 寻找关键字声明的变量、函数声明的变量,同时会对变量进行作用域的绑定

  • var声明的变量,在编译期会赋一个默认值undefined,变量提升的特性。

  • ES6及以后所有的变量申明方式都不具备变量提升,在声明之前调用会报错,这个现象在语法上称为暂时性死区TDZ。

  • 如果一个变量同时被var声明又被function声明,则变量提升的值以函数为准(函数为一等公民)。但最后是以赋值的数值作为变量的最终值。

console.log(a);  //函数a console.log(2)
var a = 10;
function a() {
console.log(1);
}
function a(){
console.log(2);
}
console.log(a); //10
  • 函数的形参也会有变量声明的行为,在编译期最后,执行期最前。
function fn(num) {
//形参也会有一个变量声明的行为,在编译最后执行最前
//根据实际情况我理解这个给形参赋予实参的数更像是var声明的变量提升后默认有undefined值一样
//所以下面console输出了函数,函数为一等公民
console.log(num); //输出函数num
var num = 3;
function num(){} //如果这里去掉则前面的console输出10
console.log(num); //3
}
fn(10);

第二阶段:执行期

数组和对象的深拷贝方法

数组: arr.concat() 或 [...arr]

对象: 若没有函数的话可以用JSON.stringify 和 JSON.parse转换,有函数就需要那种遍历的方法来拷贝。

日期对象Date

let date1 = new Date('2019/3/17 20:00:00');  //创建日期对象
//getFullYear
//getMonths 0-11
//getDate 1-31
//getDay 0-6
//getHours
//getMinutes
//getSeconds
//getTime
console.log(date1.toLocaleDateString()) //以本地表示方法表示日期
console.log(date1.toLocaleTimeString()) //以本地表示方法表示时间
console.log(date1.toLocaleString()); //上面两个的结合 console.log(date1.toDateString()); //标准方法表示日期
console.log(date1.toTimeString()); //标准方法表示时间
console.log(date1.toUTCString()); //标准方法表示的UTC时间 let date = new Date();
console.log(date.getTimezoneOffset());//-480 返回本地时间与UTC时间的分钟数差,UTC比东八区慢8小时

前端知识点回顾——Javascript篇(二)的更多相关文章

  1. 前端知识点回顾——Javascript篇(三)

    数组的冒泡.选择和插入排序法 冒泡排序法(从小到大) function bubble(arr){ for(let i = 0 ;i<arr.length-1;i++){ for(let j = ...

  2. 前端知识点回顾——Javascript篇(六)

    fetch 在原生ajax+es6promise的基础上封装的一个语法糖,返回promise对象. fetch(url, initObj) .then(res=>res.json()) .the ...

  3. 前端知识点回顾——Javascript篇(五)

    DOM 常用的DOM获取方法: node.children 返回子元素节点,没有兼容性问题,动态获取 node.parentNode 获取父节点,没有兼容性问题 node.offsetParent 获 ...

  4. 前端知识点回顾——Javascript篇(四)

    Symbol 为什么需要symbol ES5里面对象的属性名都是字符串,如果你需要使用一个别人提供的对象,你对这个对象有哪些属性也不是很清楚,但又想为这个对象新增一些属性,那么你新增的属性名就很可能和 ...

  5. 前端知识点回顾——Javascript篇(一)

    DOM特殊元素获取 document.documentElement //HTML标签 document.head //head标签 document.title //title标签 document ...

  6. web前端知识点(JavaScript篇)

    call,apply,bind call,apply,bind这三者的区别,及内部实现原理,点这里 promise promise函数的内部实现原理,点这里 闭包 闭包就是能够读取其他函数内部变量的函 ...

  7. 前端知识点回顾——HTML,CSS篇

    前端知识点回顾篇--是我当初刚转行为了面试而将自己学过的前端知识整理成的一份笔记,个人目的性很强,仅供参考. doctype 有什么用 doctype是一种标准通用标记语言的文档类型声明,目的是告诉标 ...

  8. [转] Web前端优化之 Javascript篇

    原文链接: http://lunax.info/archives/3099.html Web 前端优化最佳实践之 JavaScript 篇,这部分有 6 条规则,和 CSS 篇 重复的有几条.前端优化 ...

  9. 前端开发之JavaScript篇

    一.JavaScript介绍  前端三剑客之JavaScript,简称js,可能是这三个里面最难的一个了.很早以前,市面上流通着三种js版本,为了统一,ECMA(欧洲计算机制造协会)定义了规范的版本, ...

随机推荐

  1. Spring MVC 全局异常处理&文件上传

    Spring MVC 全局异常处理 使用SimpleMappingExceptionResolver实现异常处理 在welcome-servlet.xml进行如下配置: <bean class= ...

  2. 安全开发Java动态代理

    关于安全开发的一些思考 之前面试某宝的时候,某人问过我,如果解决开发不懂安全的问题,就比如说SSRF,XEE这样的漏洞,如果一旦发生,应该如果立刻去响应,并帮助开发人员修复漏洞,难道写一个jar包?然 ...

  3. ES查询语句

    记录常用的es 查询 聚合 GET _cat / indices GET / p_ext_develop / _mapping / g GET / p_ext_develop / _analyze { ...

  4. AJAX—JSON和Django内置序列化

    JSON 什么是JSON JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言 * J ...

  5. 获取select的值

    <!-- html --> <select id=''check> <option>北京</option> <option>北京</o ...

  6. Django如何重设Admin密码(转)

      django的admin用户被我多动症一样的测试,给密码弄丢了,需要重置. 从数据库重置的可能性为0,因为django对于密码有保护策略.考虑从运行程序的地方进行重置: 1.在程序的文件夹下,执行 ...

  7. JS中call()和apply()以及bind()的区别

    一.方法定义: apply:调用一个对象的一个方法,用另一个对象替换当前对象.例如:B.apply(A, arguments);即A对象应用B对象的方法. call:调用一个对象的一个方法,用另一个对 ...

  8. Some ML Tutorials

    VAE: What-is-variational-autoencoder-vae-tutorial Variational-autoencoders-explained Building variat ...

  9. javascript只弹出一次框 再次刷新不弹出

    .打开页面自动弹出  当关闭弹框的时候  设置cookie生存时间  再次刷新页面判断cookie是否失效 <html> <head> <meta charset=&qu ...

  10. FirstWriting

    在很久很久以前,你拥有我我拥有你 <外面的世界> 在很久很久以前我就有搞一个类似博客的东西的想法,不过一直都没有尝试着搞-- 某天(10号左右吧)刷知乎看到github和hexo可以搭建博 ...