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. SpringBoot ( 七 ) :springboot + mybatis 多数据源最简解决方案

    说起多数据源,一般都来解决那些问题呢,主从模式或者业务比较复杂需要连接不同的分库来支持业务.我们项目是后者的模式,网上找了很多,大都是根据jpa来做多数据源解决方案,要不就是老的spring多数据源解 ...

  2. Asp.Net Web API(四)

    HttpResponseException-----HTTP响应异常 如果Web API控制器抛出一个未捕捉的异常,会发生什么呢?在默认情况下,大多数异常都会转换为一个带有状态码500的内部服务器错误 ...

  3. 54、js初识

    今天这篇将介绍javascript,学完javascript就可以使你的网页动起来. 一.JavaScript概述  1.JavaScript的历史 1992年Nombas开发出C-minus-min ...

  4. 【ANT】description元素和属性

    <?xml version="1.0" ?> <project default="test"> <description> ...

  5. iOS 网络状态判断方案(支持iOS11和iPhoneX)

    在之前的iPhone中.我们可以根据导航栏上方的网络状态view.来判断网络状态.(这种方案本来就不太好) 这种方案在iPhone X 手机上.不可使用. 我们可以通过 Reachability  来 ...

  6. android v4兼容包

    一句话解释android兼容包就是:支持更多的组件,样式更好看了.好粗糙的解释啊! 我们都知道Android一些SDK比较分裂,为此google官方提供了Android Support Library ...

  7. class_copyIvarList方法获取实例变量问题引发的思考

    在runtime.h中,你可以通过其中的一个方法来获取实例变量,那就是class_copyIvarList方法,具体的实现如下: - (NSArray *)ivarArray:(Class)cls { ...

  8. 基于Jmeter的PostgreSQL空间性能测试笔记

    这是很早之前做过的一个测试,最近在整理postgresql测试相关的资料,所以也把它拿出来了与大家分享. 首先解释一下所谓的PostgreSQL空间性能,主要是基于postgis的空间数据导入性能,详 ...

  9. Visual Representation of SQL Joins

    原文:http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins   从视图上介绍了7种不同类型的JOIN ...

  10. 用Go校验下载文件之SHA256

    用GO校验下载文件之SHA256 原来对计算机和网络使用安全这块不够重视,用了N多年盗版的操作系统和办公软件,为了破解使用过各种激活软件,也安装使用过很多别人破解过的软件:网络下载的文件从不校验.慢慢 ...