前端知识点回顾——Javascript篇(二)
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篇(二)的更多相关文章
- 前端知识点回顾——Javascript篇(三)
数组的冒泡.选择和插入排序法 冒泡排序法(从小到大) function bubble(arr){ for(let i = 0 ;i<arr.length-1;i++){ for(let j = ...
- 前端知识点回顾——Javascript篇(六)
fetch 在原生ajax+es6promise的基础上封装的一个语法糖,返回promise对象. fetch(url, initObj) .then(res=>res.json()) .the ...
- 前端知识点回顾——Javascript篇(五)
DOM 常用的DOM获取方法: node.children 返回子元素节点,没有兼容性问题,动态获取 node.parentNode 获取父节点,没有兼容性问题 node.offsetParent 获 ...
- 前端知识点回顾——Javascript篇(四)
Symbol 为什么需要symbol ES5里面对象的属性名都是字符串,如果你需要使用一个别人提供的对象,你对这个对象有哪些属性也不是很清楚,但又想为这个对象新增一些属性,那么你新增的属性名就很可能和 ...
- 前端知识点回顾——Javascript篇(一)
DOM特殊元素获取 document.documentElement //HTML标签 document.head //head标签 document.title //title标签 document ...
- web前端知识点(JavaScript篇)
call,apply,bind call,apply,bind这三者的区别,及内部实现原理,点这里 promise promise函数的内部实现原理,点这里 闭包 闭包就是能够读取其他函数内部变量的函 ...
- 前端知识点回顾——HTML,CSS篇
前端知识点回顾篇--是我当初刚转行为了面试而将自己学过的前端知识整理成的一份笔记,个人目的性很强,仅供参考. doctype 有什么用 doctype是一种标准通用标记语言的文档类型声明,目的是告诉标 ...
- [转] Web前端优化之 Javascript篇
原文链接: http://lunax.info/archives/3099.html Web 前端优化最佳实践之 JavaScript 篇,这部分有 6 条规则,和 CSS 篇 重复的有几条.前端优化 ...
- 前端开发之JavaScript篇
一.JavaScript介绍 前端三剑客之JavaScript,简称js,可能是这三个里面最难的一个了.很早以前,市面上流通着三种js版本,为了统一,ECMA(欧洲计算机制造协会)定义了规范的版本, ...
随机推荐
- WinPE基础知识之代码解析
void CMyPE::OnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 // 打开一个文件夹选择对话框 CFileDialog dlg(TRUE); dlg. ...
- VC文件扩展名
.APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度. .BMP:位图资源文件. .BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE ...
- js 扁平化输出数组
1.使用数组的flat方法 [1,2,[3,[4,5]]].flat(Infinity) //[1, 2, 3, 4, 5] 2.实现方式二: var arr = [[1, 2, 23], [13, ...
- C# 填充无效,无法被移除
1.本文采用微软的 RijndaelManaged 命名空间: System.Security.Cryptography Assemblies: mscorlib.dll, netstandard.d ...
- (二十三)ARM平台NEON指令的编译和优化
ARM平台NEON指令的编译和优化 本文介绍了ARM平台基于ARM v7-A架构的ARM Cortex-A系列处理器(Cortex-A5, Cortex-A7,Cortex-A8, Cortex-A9 ...
- VTORRAAYY ws+tls+nginx config
# nginx conf partal location /haha { proxy_redirect off; # the prot should same with config v2*** pr ...
- 微信小程序开发(八)获取手机ip地址
// succ.wxml <view>手机IP:{{motto.query}}</view> // succ.js var app = getApp() Page({ data ...
- 用实例的方式去理解storm的并发度
什么是storm的并发度 一个topology(拓扑)在storm集群上最总是以executor和task的形式运行在suppervisor管理的worker节点上.而worker进程都是运行在jvm ...
- Kinect 深度测量原理
和其他摄像机一样,近红外摄像机也有视场.Kinect摄像机的视野是有限的,如下图所示: 如图,红外摄像机的视场是金字塔形状的.离摄像机远的物体比近的物体拥有更大的视场横截面积.这意味着影像的高度和宽度 ...
- Almost Acyclic Graph CodeForces - 915D (思维+拓扑排序判环)
Almost Acyclic Graph CodeForces - 915D time limit per test 1 second memory limit per test 256 megaby ...