前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript学习笔记007-js的执行

JavaScript学习笔记007-js的执行

作者头像
Mr. 柳上原
发布2018-09-05 15:20:35
3780
发布2018-09-05 15:20:35
举报
文章被收录于专栏:菜鸟前端工程师

Author:Mr.柳上原

  • 付出不亚于任何的努力
  • 愿我们所有的努力,都不会被生活辜负
  • 不忘初心,方得始终

俗话说

读书百遍,其义自见

真的是有道理的

特别是像我这种初学前端的小白

以前从未接触过任何代码方面的知识

在学习html+css的时候,觉得还行,前端果然入门简单,后期也不算难

还一直在沾沾自喜

觉得自己是学习天才

当进入js学习阶段时

才发现自己有多么的天真

任何知识都不是简简单单就能学会

任何事也不是随随便便就能成功

当学到一个阶段,倒回去把以前的知识在看几遍

很多以前不懂的,突然就懂了

很多以前忘记了的,突然就想起了

很多以前没在意的,突然发现原来是讲过的

代码语言:javascript
复制
<!DOCTYPE html> <!-- 文档类型:标准html文档 -->

<html lang='en'> <!-- html根标签 翻译文字:英文 -->

<head> <!-- 网页头部 -->

<meat charset='UTF-8'/> <!-- 网页字符编码 -->

<meat name='Keywords' content='关键词1,关键词2'/>

<meat name='Description' content='网站说明'/>

<meat name='Author' content='作者'/>

<title>前端59期学员作业</title> <!-- 网页标题 -->

<link rel='stylesheet' type='text/css' href='css/css1.css'/> <!-- 外链样式表 -->

<style type='text/css'> /*内部样式表*/

</style>

</head>

<body> <!-- 网页主干:可视化区域 -->

<script>

// delete 删除
var a = 1;
b = 2;
delete a; // 不能删除
delete b; // 可以删除

// js解释器 (v8谷歌解释器)
// 不同的浏览器的js解释器有可能不同

// js第一阶段:编译期,对js代码进行静态分析,找到申明的变量 / 函数申明,检查语法是否符合规范
// js第二阶段:执行期,运行js代码

console.log(a);
var a = 1;
/* 
编译期:
var a; // a = undefined

执行期:
console.log(a);
a = 1; // var先用再定义,会默认在顶层作用域定义var a;
// a赋值是在执行期
*/

let a = a; // 当a没有定义时,右边的a级之前的区域,为暂时性死区,TDZ,只存在于es6里
function fn(a = a) { // 当函数的形参使用默认值时,小括号内是一个临时作用域,默认是let a = a;依然为暂时性死区,会报错
alert (a);
}

// 函数为js一等公民,当函数名与变量名重名时,函数会覆盖掉变量
console.log(a);  // a = function a() {}
var a = 1; // var可以重复申明,let不能重复声明
function a() {};
console.log(a); // a = 1
/* 
编译期:
var a; // a = undefined
function a() {};

执行期:
console.log(a); // 第一个
a = 1;  // 重新赋值
console.log(a); // 第二个
*/

function a() {
var b = 1;
console.log(b);
}
function a() {
var b = 2;
console.log(b);
}
console.log(a);
a();
var a = 5;
a();
/* 
编译期:
// 重名时,函数覆盖var变量
// 重名时,后面函数覆盖前面的
function a() {
var b = 1;
console.log(b);
}
function a() {
var b = 2;
console.log(b);
} // 最后只剩下这行重名函数
var a;

执行期:
console.log(a); // a打印执行的为第二个b = 2的最后剩下的重名函数
a();  // a函数执行的为b = 2的最后剩下的重名函数作用域被激活
// 激活函数后进入函数内部的编译期
编译期:
var b;
执行期:
b = 2;
console.log(b);
// 结果为2
a = 5;
a(); // 前面函数已经执行结束,只剩下前面的变量a,a不是函数时,加小括号直接报错
*/

// 同级function内变量的调用:传参
let a = 1;
function fn(a) {
console.log(a);  // a = 2
}

function fn2() {
let a = 2;
fn(a);
}

</script>

</body>

</html>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档