JS学习:第一周——NO.1预解释
1.何为预解释?
在当前作用域下,在JS代码执行之前,浏览器会对带var和带function的进行提前声明或定义;
①带var的:只声明不定义;告诉浏览器,有这么一个变量,但是并没有赋值
②带function的:声明+定义;不仅告诉浏览器,有这么一个变量,而且对变量进行了赋值;
2.作用域链?
当函数被调用的时候,会形成一个私有作用域,看私有作用域中,是否存在私有变量A:
1)如果有私有变量A:那么整个作用域中的A,跟外界没有任何关系;所有该作用域中的A,都是私有变量;
2)如果没有私有变量A:就会往上级作用域进行查找,找到的话,直接用,找不到继续找,一直找到window还没有,就会报错!;
3.函数定义的3步骤?
①.开辟一个空间地址
②.把函数体中所有JS代码作为字符串放在这个空间中
③.把空间地址赋值给函数名
4.函数执行的4步骤?
①.形成一个私有作用域
②.形参赋值
③.预解释
④.代码从上到下的执行
几道面试题:
①
function fn() {
var i = 10;
return function (n) {
console.log(n + (++i));
}
}
var f = fn();
f(15);
f(20);
fn()(15);
fn()(20);
fn()(30);
f(30);
②
var num = 10;
var obj = {
num: 20,
fn: (function (num) {
this.num *= 2;
num += 10;
return function () {
this.num *= 3;
num += 1;
console.log(num);
}
})(num)
};
var fn = obj.fn;
fn();
obj.fn();
console.log(window.num, obj.num);
③
var i=3;
function fn(){
i*=2;
return function(n){
console.log(n*(++i))
}
}
var f=fn();
f(3)
fn()(3);
f(4);
fn()(3);
菜鸟学习,望共同进步!
JS学习:第一周——NO.1预解释的更多相关文章
- [js]js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了
js的惰性声明, js中声明过的变量(预解释),后在不会重新声明了 fn(); // 声明+定义 js中声明过一次的变量,之后在不会重新声明了 function fn() { console.log( ...
- 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】
[吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和“AI是新电力”相类似的说法是什么? [ ]AI为我们的家庭和办公室的个人设备供电 ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第一周
java学习第一周 本周是新学期的开端,也是新的学习进程的开端,第一次接触java这门课程,首先书本的厚度就给我一种无形的压力,这注定了,这门课程不会是轻松的,同时一种全新的学习方 ...
- Java学习第一周博客
20145307<Java程序设计>第一周学习总结 教材学习内容总结 首先学习安装Java有两种方法,一种是用Eclipse直接编辑输出,另一种方法是用记事本之后用win+G开启cmd运行 ...
- Java学习第一周
第一周学习了JDK的安装和环境的配置,初步了解了Java与C的不同之处,学习了Java的变量.基本数据类型.以及面向对象的基础.并且自行完成了一些简单Java程序的编写. (1)学习了为什么使用抽象类 ...
- 20165213 java学习第一周
20165213 -2018-2<Java程序设计>第一周学习总结 教材学习内容总结 java的四个特点:面向对象.平台无关性.动态性.简单. java编写程序步骤:再有jdk的情况下,先 ...
- H5学习第一周
已经接触H5一个周了,经过学习,总算对H5有了一些了解和认知,下面就总结一下我对H5的认知和感悟. 首先接触的是H5的常用标签[meta],它有其以下常用属性 1.charset属性.单独使用,设置文 ...
- Java学习第一周心得体会
一周的学习很快就过去了,说说我个人的总结吧! 下面几个是我觉得需要牢牢记住的 1.Java的执行机制:先编译.再解释 2.变量以及基本数据类型 3.强类型编程语言:要求变量的类型与值的类型要一致 4. ...
- Three.Js学习第一天
因为工作需求,最近接触到了ThreeJs库,国内学习文档的确少,所以在这里写下bolgs记录学习史,并且给后面学习的人尽一份微博之力. 3D场景依靠WebGL技术.目前支持比较好的浏览器,谷歌.火狐. ...
随机推荐
- Spring远程调用技术<2>-Hessian和Burlap
上篇谈到RMI技术,加上Spring的封装,用起来很方便,但也有一些限制 这里的Hessian和Burlap解决了上篇提到的限制,因为他们是基于http的轻量级远程服务. Hessian,和RMI一样 ...
- HOLOLENS不适合加天空盒
加了就有点像VR了,但是视野太窄,所以还是去掉天空盒吧
- winform窗体控件(全)
回顾跟补充下除了昨天那常用6个其他的winform窗体控件作用 1:Button:按钮 (1)AutoSize:如果是True的情况下,内容将会撑开:False的话会另起一行 (2)Enabled: ...
- [No00007E]2016-面经[中]
目录: 写一份动人简历的九个步奏 英文简历必备的十大元素 写一份动人简历的九个步骤 写一份动人的简历可以算得上是找工作最难的部分之一,但是,通过下面九步,这件事不再那么难了. 简历定位.雇主们之所以花 ...
- libpng使用
自己的实现 unsigned int component(png_const_bytep row, png_uint_32 x, unsigned int c, unsigned int bit_de ...
- Binder理解
native takepicture -> camera -> ICamera: class bpbinder: transact -> BpBinder: transact -&g ...
- thrift中的超时(timeout)坑
最近在项目中采用thrift作为后台服务rpc框架,总体用下来性能还不错,跨语言特性使用起来也还行,但是也遇到了一些坑,其中之一就是超时问题(timeout),如果服务端些的某些业务场景耗时较长,th ...
- mysql索引 (校验规则引发的血案)
EXPLAIN SELECT a.* FROM gc_fin_rate_info a LEFT JOIN rbac_user b ON a.owner =b.id; 处理之前的情况. 虽然走了索引, ...
- React2
1.属性 a. 属性和状态是react中数据传递的载体: b. 属性是声明以后不允许被修改的东西: c. 属性只能在组件初始化的时候声明并传入组件内部,并且在组件内部通过this.props获取: d ...
- TortoiseGit的使用教程(转)
1.windows安装TortoiseGit详细使用教程[基础篇] http://www.mamicode.com/info-detail-423481.html 2.Windows下Git与Tort ...