1、var

众所周知var用来定义变量 如 undefined,number,string,bool,array,function,object,null。

但有时候为了省事,就会出现一些内存泄露的情况:

function fun(){

var a=b=1;//为了省事直接赋值

}
fun();

console.log(a);//undefined;

console.log(b);//1 此时b成了全局变量

function fun(){

a=1;

var a=2;

console.log(a);//2;

}
fun();

console.log(a);//undefined; 编译时 变量 会默认转到上下文的首行,因此a不是全局变量

2、for循环

var arr=[1,2,3];

for(var i=0;i<arr.length;i++){

arr.push(i);//会出现死循环,数组push一个值会改变自身的length,而for一直会计算arr.length

//1、耗废性能

//2、循环修改数组不注意的情况下会出现意外的BUG

}

console.log(i);// 4 变量i可能不被注意,一直存在该上下文的作用域 。

//修改之后

var arr=[1,2,3];

var i,max;

for(i=0,max=arr.length;i<max;i++){

arr.push(i);

}

console.log(i);// 4

console.log(arr);//[1, 2, 3, 0, 1, 2]

3、new

var Person=function(name,age){

this.name=name;

this.age=age;

}

var per=new Person('张三',17);

上面new所完成的动作:

一、创建一个新对象;

二、将构造函数的作用域赋给新对象(因此this就指向了新对象);

三、执行构造函数中的代码(为这个新对象添加属性);

四、返回新对象赋值给per(this指向per);

4、function

function即是函数,也是构造函数,还可以是对象。

var fun=function(){

console.log(this.a);

this.c="345";

};//函数

fun.a="123",fun.b="234";//对象

var tempFun=new fun();//构造函数 输出123

console.log(tempFun.a);//undefined

5、this

执行上下文(EC):每当控制转移到一段可执行代码时,控制就进入一个执行上下文。每一个函数的返回都会退出当前的执行上下文。

this:执行上下文(EC)中的一个属性,在进入上下文时确定。

//闭包经典例子

var temp=1;

function fun(){
    console.log(this);
    var temp=0;
    return function(){

console.log(this);

this.temp+=1;
        console.log(this.temp);
    }
}

var fun2=new fun();//new会创建新对象,并执行函数 运行时this指向创建对象(未命名,调试器用fun表示) 再赋值给fun2

fun2();//(因为fun2是全局对象,即this=window) 输出2

6、()括弧

1、(a+b) 表达式

2、a() 进入执行上下文(运行函数)

怎么区分呢

我的理解是 当"("前面是+、-、*、/、%、=、!等运算符时做为表达式处理;其它就会当做执行函数处理

7、[ ] 索引

var a=1;

a[0]=2;

console.log(a[0]);//undefined

javascript所有对象都会提供get和set的函数("引用类型"object function array string等 可以get到值,但"值类型"number 不行)

8、{ }

1、创建一个新对象 var obj={};

2、创建一个局布上下文(只有function可以)

for(int i=0;i<2;i++){

var a=i;

}

console.log(a);//2 for、switch、if等循环不能创建

9、执行上下文、变量对象、作用域链

1、执行上下文(EC) 上面说了只有function可以创建一块局部的上下文,当前上下文被载入内存的时候 就变成了执行上下文

2、变量对象(VO) 与执行上下文相关的特殊对象 储存上下文中的声明

2.1、变量(函数内声明的变量)

2.2、函数的声明

2.3、函数的形参

3、作用域链(Scope) 作用域是上下文中所有变量对象(包括父变量对象)的列表

JavaScript细节成败的更多相关文章

  1. Html,Css,Dom,javascript细节总结

    最近愈发觉得基础的重要性,细节决定成败,所以希望能够将自己注意到的搜集到的一些关于前端的小细节小知识整理出来,更好的方便自己记忆回顾. 1.在构建网页Html框架时,尽量只给外层标记(即是父标记)定义 ...

  2. 开篇----JavaScript细节的那些事儿

    JavaScript现在已经是全世界浏览器通用的语言,目前也完全可以在服务器端做开发,如Node.js,市面上好的JavaScript的书有很多,有的还是经典之作,值得收藏. 趁此东风,打算接下来写一 ...

  3. 我所了解的javaScript细节

    变量转换 var myVar = "3.14159", str = ""+ myVar,// to string int = ~~myVar, // to in ...

  4. JavaScript细节整理

    JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是 ...

  5. Javascript 细节优化技巧(转)

    break 语句和 continue 语句 break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行. break语句用于跳出代码块或循环. var i = 0; while( ...

  6. JavaScript细节

    1.关于全局变量 全局变量在所有的作用域中都是可见变量.当程序小,代码量小的时候,可能还便于维护,而随着程序越来越复杂,代码量也随之越来越大后,过多的全局变量会变的很难处理.因为一个全局变量可以被程序 ...

  7. 从零开始学习jQuery(剧场版) 你必须知道的javascript

    原文:从零开始学习jQuery(剧场版) 你必须知道的javascript 一.摘要 本文是jQuery系列教程的剧场版, 即和jQuery这条主线无关, 主要介绍大家平时会忽略的一些javascri ...

  8. javaScript常用知识点有哪些

    javaScript常用知识点有哪些 一.总结 一句话总结:int = ~~myVar, // to integer | 是二进制或, x|0 永远等于x:^为异或,同0异1,所以 x^0 还是永远等 ...

  9. 转:drupal常用api

    drupal常用api   最短的函数 // 语言字串,除了可以获取对应语言外,还可以设置字串变量.可以是!var, @var或 %var,%var就添加元素外层.@var会过滤HTML,!var会原 ...

随机推荐

  1. Jmeter接口测试使用beanshell断言json返回

    一般情况下响应断言就能解决很多问题,但是返回复杂的json时就需要用到beanshell断言. 举个例子 免费的接口API www.sojson.com/api/beian/sojson.com ho ...

  2. Swift基础学习

    Swift基础学习  http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...

  3. 用html和css轻松实现康奈尔笔记(5R笔记)模板

    缘起 人家都说康奈尔笔记法,很好用呢,能抵抗遗忘曲线,让你的笔记事半功倍,有兴趣的同学自行百度哈. 网上有很多现成的模板,下载下来之后吧,看着好像在上面写英文可能更方便一点,行距很小,而且还有网址在上 ...

  4. vue使用国际化

    转载请注明作者与出处 一:安装vue-i18n npm install vue-i18n --save 二:定义不同语言的json语言包 一般把它放到npm工程中的src目录下,因为这个目录是要进行编 ...

  5. Java JTS & 空间数据模型

    空间数据模型 判断两个几何图形是否存在指定的空间关系.包括: 相等(equals).分离(disjoint).相交(intersect).相接(touches).交叉(crosses).包含于(wit ...

  6. C/C++调用Golang 二

    C/C++调用Golang 二 <C/C++调用Golang 一>简单介绍了C/C++调用Golang的方法步骤,只涉及一个简单的函数调用.本文总结具体项目中的使用场景,将介绍三种较复杂的 ...

  7. iOS学习—— UINavigationController的返回按钮与侧滑返回手势的研究

    侧滑返回手势是从iOS7开始增加的一个返回操作,经历了两年时间估计iPhone用户大部分都已经忽略了屏幕左上角那个碍眼的back按钮了.之前在网上搜过有关侧滑手势的技术博客,发现大多比较散乱,甚至有很 ...

  8. extjs Proxy

    我们先来看看Extjs非常绚丽的Grid,其功能包括显示数据列表,修改.删除,分页,排序等功能.   Grid组件用来显示Store中的数据.Store可以看做是Model实例的集合.Grid仅关心如 ...

  9. 02-01官网静默模式安装WebLogic

    参考连接:https://docs.oracle.com/middleware/11119/wls/WLSIG/silent.htm#CIHCAHGC 以静默模式运行安装程序 本章介绍如何以静默方式运 ...

  10. python编辑器pydev安装

    pydev实际上时eclipse的插件 1.安装eclipse(1)eclipse不需要安装,解压文件夹,点击eclipse.exe可使用 2.安装pydev (1) 解压pydev可看到featur ...