JavaScript细节成败
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细节成败的更多相关文章
- Html,Css,Dom,javascript细节总结
最近愈发觉得基础的重要性,细节决定成败,所以希望能够将自己注意到的搜集到的一些关于前端的小细节小知识整理出来,更好的方便自己记忆回顾. 1.在构建网页Html框架时,尽量只给外层标记(即是父标记)定义 ...
- 开篇----JavaScript细节的那些事儿
JavaScript现在已经是全世界浏览器通用的语言,目前也完全可以在服务器端做开发,如Node.js,市面上好的JavaScript的书有很多,有的还是经典之作,值得收藏. 趁此东风,打算接下来写一 ...
- 我所了解的javaScript细节
变量转换 var myVar = "3.14159", str = ""+ myVar,// to string int = ~~myVar, // to in ...
- JavaScript细节整理
JavaScript是一个绝冠全球的编程语言,可用于Web开发.移动应用开发(PhoneGap.Appcelerator).服务器端开发(Node.js和Wakanda)等等.JavaScript还是 ...
- Javascript 细节优化技巧(转)
break 语句和 continue 语句 break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行. break语句用于跳出代码块或循环. var i = 0; while( ...
- JavaScript细节
1.关于全局变量 全局变量在所有的作用域中都是可见变量.当程序小,代码量小的时候,可能还便于维护,而随着程序越来越复杂,代码量也随之越来越大后,过多的全局变量会变的很难处理.因为一个全局变量可以被程序 ...
- 从零开始学习jQuery(剧场版) 你必须知道的javascript
原文:从零开始学习jQuery(剧场版) 你必须知道的javascript 一.摘要 本文是jQuery系列教程的剧场版, 即和jQuery这条主线无关, 主要介绍大家平时会忽略的一些javascri ...
- javaScript常用知识点有哪些
javaScript常用知识点有哪些 一.总结 一句话总结:int = ~~myVar, // to integer | 是二进制或, x|0 永远等于x:^为异或,同0异1,所以 x^0 还是永远等 ...
- 转:drupal常用api
drupal常用api 最短的函数 // 语言字串,除了可以获取对应语言外,还可以设置字串变量.可以是!var, @var或 %var,%var就添加元素外层.@var会过滤HTML,!var会原 ...
随机推荐
- CS:APP3e 深入理解计算机系统_3e ShellLab(tsh)实验
详细的题目要求和资源可以到 http://csapp.cs.cmu.edu/3e/labs.html 或者 http://www.cs.cmu.edu/~./213/schedule.html 获取. ...
- 《C++程序设计语言(英文第四版)》【PDF】下载
<C++程序设计语言(英文第四版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382177 内容简介 本书是C++领域经典的参 ...
- 《分布式系统原理介绍》【PDF】下载
内容简介 分布式系统理论体系非常庞大,涉及知识面也非常广博,本文精心选择了部分在工程实践中应用广泛.简单有效的分布式理论.算法.协议加以介绍.全文分为两大部分,第一部分介绍了分布式系统的一些基本概念并 ...
- 微信小程序教学第三章第三节(含视频):小程序中级实战教程:视图与数据关联
§ 视图与数据关联 本文配套视频地址: https://v.qq.com/x/page/z0554wyswib.html 开始前请把 ch3-3 分支中的 code/ 目录导入微信开发工具 首先 首先 ...
- web.xml文件--编码注意事项
写在前面: 最近发布项目的时候,要修改web.xml文件的内容,然后我在本机的web.xml文件中是有注释的,但是到了服务器上面,就说编码不同.我也没有怎么注意.就继续启动服务器,但是访问网站,一直报 ...
- VR、AR、MR定义区别
近日, 获得谷歌5亿美元融资的技术公司Magic Leap在WSJD展会中放出了一段实录视频,引起不小骚动.如今,也有媒体称他们为MR公司,那么VR.AR.MR之间到底有什么区别呢. VR.AR.MR ...
- iOS 让CoreData更简单些
原文:http://www.cocoachina.com/ios/20170421/19096.html 前言 本文并不是CoreData从入门到精通之类的教程, 并不会涉及到过多的原理概念描述, 而 ...
- Android中style和theme的区别
在学习Xamarin android的过程中,最先开始学习的还是熟练掌握android的六大布局-LinearLayout .RelativeLayout.TableLayout.FrameLayou ...
- ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录
放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...
- KVM(二):KVM应用
++++++++++++++++++++++++++++++创建和拍摄快照++++++++++++++++++++++++++++++++++ KVM快照方法常用的是qemu-img snapshot ...