in:检测某一个属性是否属于这个对象(既可以检测私有的属性,也可以检测公有的属性) --> attr in obj

1、不管条件是否成立,在预解释的时候,判断体中的带var和function的都要进行预解释
window下的预解释: var a; -->a=undefined 我们在全局作用域下声明的变量不仅仅是全局变量,也相当于给window增加了一个叫做"a"的属性名
if (!("a" in window)) {//"a" in window ->true 取反后条件不成立,那么里面的给a赋值的代码也不会在执行
var a = "珠峰";
}
console.log(a);//-->undefined

2、预解释只发生在"="的左边,右边的是值,是不进行预解释的
fn();//-->由于预解释的时候就已经完成了函数的声明+定义,所以在页面中的任何位置都可以执行fn这个函数
function fn() {
console.log("ok");
}

//预解释:var fn;
console.log(fn);//-->undefined
//fn(); -->Uncaught TypeError: fn is not a function fn不是一个函数
var fn = function () {
console.log("no");
};
console.log(fn);//-->匿名函数本身

对于匿名函数中的函数表达式来说,我们只有在赋值的下面才能执行对应的函数 ,所以在真实的项目中,我们一般都是用函数表达式来定义函数

3、自执行函数在预解释的时候是不进行的
function是不进行预解释的,当代码执行到这的时候,我们定义和执行一起完成即可
;(function (num) {
//自执行函数执行也会形成一个私有的作用域:形参赋值;预解释;代码执行;形成的私有作用域销毁;
})(100);

匿名函数:
1)函数表达式-->把函数定义的部分产生的内存地址当做值赋值给我们的一个变量(某一个元素的事件)
var fn = function () {};
oDiv.onclick=function(){};
//给一个元素的某一个事件类型绑定一个方法:
//当代码执行到上面行的时候,首先开一个空间(地址:xxxfff000),把匿名函数中的代码当做字符串存进去,然后把地址赋值给我们的onclick -->oDiv.onclick=xxxfff000;
//当我们触发点击事件的时候,首先通过xxxfff000找到对应的函数,并且让函数执行

2)自执行函数-->定义和执行的两部分一起完成了
function(num){}(100); 定义完成立即执行,并且给形参num赋值为100 -->这样写是不符合语法的,如何的处理呢?
前面加;的作用就是防止上面的代码结束不加;
;(function (num) {

})(100);
~function(num){}(100);
!function(num){}(100);
+function(num){}(100);
-function(num){}(100);

4、预解释的时候,如果遇到名字重复了,不会重新的声明,但是会重新的进行定义
变量的名字和函数的名字相同也算作冲突
var fn = 12;//-->window.fn=12;
function fn() {

}//-->window.fn=xxxfff000

fn(); -->2
function fn(){console.log(1);}
fn(); -->2
var fn=13;
fn(); -->报错:fn is not a function
function fn(){console.log(2);}
fn();

5、在私有作用域中的预解释
1)函数体中return下面的代码是不在执行的了,但是如果当中存在var 或者 function是要进行预解释的
2)函数体中return后面的代码,是我们要返回的值,它是一个值,所以不参加预解释
function fn() {
console.log(num);
return function () {//当执行到return的时候,我们开一个新的堆内存,并且把function这个函数对应堆内存的地址返回
};
//下面的两行代码不执行,但是预解释的时候,需要声明一个私有变量num,在函数体中出现的num变量都是私有的变量
var num = 13;
console.log(num);
}
fn();

综述:自从学了预解释,从此节操是路人

课程笔记:——javascript中的预解释2的更多相关文章

  1. 课程笔记:——Javascript 中的预解释1

    1.预解释(变量提升):在当前作用域下,JS代码执行之前,浏览器首先会把所有带var和function关键字的进行提前的声明或者定义var num = 12;声明(declare): var num; ...

  2. 第112天:javascript中函数预解析和执行阶段

    关于javascript中的函数:  1.预解析:把所有的函数定义提前,所有的变量声明提前,变量的赋值不提前  2.执行 :从上到下执行,但有例外(setTimeout,setInterval,aja ...

  3. js中的预解释

    在js中,带var 和function关键字的需要预解释: 那什么是预解释?就是在js代码执行之前,先申明好带有var 关键字和带有function关键字的变量,在内存里先安排好.但是带有var关键字 ...

  4. js学习笔记----JavaScript中DOM扩展的那些事

    什么都不说,先上总结的图~   Selectors API(选择符API) querySelector()方法 接收一个css选择符,返回与该模式匹配的第一个元素,如果没有找到匹配的元素,返回null ...

  5. javascript中的预编译问题

    Js作为脚本语言,可以不需要编译直接运行,但遇到类似变量或者函数同名,预编译方面的知识可以帮助我们更好解决问题. 示例: 这是一段js中普通的函数调用代码 <script>1.    // ...

  6. 读书笔记-JavaScript中的全局对象

    对于任何JavaScript程序,当程序开始运行时,JavaScript解释器都会初始化一个全局对象以供程序使用.这个JavaScript自身提供的全局对象的功能包括: 1.全局对象拥有一些常用的属性 ...

  7. codecademy课程笔记——JavaScript Promise

      Promise是一种表示异步操作最终的结果的对象,一个Promise对象有三种状态 Pending: 初始状态 ,操作还未完成 Fullfilled:操作成功完成,且这个promise现在有一个r ...

  8. 《深入理解ES6》笔记—— JavaScript中的类class(9)

    ES5中的近类结构 ES5以及之前的版本,没有类的概念,但是聪明的JavaScript开发者,为了实现面向对象,创建了特殊的近类结构. ES5中创建类的方法:新建一个构造函数,定义一个方法并且赋值给构 ...

  9. JS开发备忘笔记-- Javascript中document.execCommand()的用法

    document.execCommand()方法处理Html数据时常用语法格式如下:document.execCommand(sCommand[,交互方式, 动态参数]) 其中:sCommand为指令 ...

随机推荐

  1. easyX最新版在VS2015上的问题解决啦啦

    7.10 修改完easyX的路径,只剩下一个问题 []无法解析的外部符号_iob_func,该符号在函数“”中被引用 []1个无法解析的外部命令 原因: 版本的问题,代码已经编译过了,但是是2012版 ...

  2. JQuery_DOM 节点操作之创建节点、插入节点

    一.创建节点 为了使页面更加智能化,有时我们想动态的在html 结构页面添加一个元素标签,那么在插入之前首先要做的动作就是:创建节点 <script type="text/javasc ...

  3. R语言实战(一)介绍、数据集与图形初阶

    本文对应<R语言实战>前3章,因为里面大部分内容已经比较熟悉,所以在这里只是起一个索引的作用. 第1章       R语言介绍 获取帮助函数 help(), ? 查看函数帮助 exampl ...

  4. css实现定高的元素在不定高的容器中水平垂直居中(兼容IE8及以上)

    容器设置相对定位 元素设置宽高,并使用绝对定位,上下左右值均为0,margin:auto 如下所示: <!DOCTYPE html> <html> <head lang= ...

  5. 【转】OPENGL基本API概述

    本文信息资源来源于网络,欢迎转载!转载时请保留本文链接(http://www.shopliyang.com.cn/)! OpenGL中的gl库是核心库,glu是实用库,glut是实用工具库. gl是核 ...

  6. [hadoop] hadoop-all-in-one-伪分布式安装

    hadoop伪分布式-all-in-one安装 #查看hadoop 版本 [root@hadoop-allinone-200-123 bin]# pwd /wdcloud/app/hadoop-2.7 ...

  7. CSS样式应用

    CSS样式应用的方法: (1)行内样式,将css样式直接放到标签当中,一般都是放入标签的style属性中,它是最方便的一种样式,也是最不方便修改的样式.如下: (2)内嵌式,通过将css写在网页源文件 ...

  8. [HTML/HTML5]9 使用表单

    9.1  创建基本表单 表单都具有相同的基础结构.即它都包含表单的的开始标记<form>和结束标记</form>.<input>控件和处理表单的方法.form元素包 ...

  9. 常见HTML的!DOCTYPE声明

    HTML或者XHTML版本 !DOCTYPE声明 HTML 2.0 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> HTM ...

  10. 【原创】基于SVM作短期时间序列的预测

    [面试思路拓展] 对时间序列进行预测的方法有很多, 但如果只有几周的数据,而没有很多线性的趋势.各种实际的背景该如何去预测时间序列? 或许可以尝试下利用SVM去预测时间序列,那么如何提取预测的特征呢? ...