function变量困惑】的更多相关文章

var name = "The Window"; var object = { name : "My Object", getNameFunc : function(){ return function(){ return this.name; }; } }; 一个经典的代码,在高程也出现过的,意在说明 this 和 闭包变量作用域. 以前写过一篇记录一下,最近在sf看到一博客文章,又突然陷入深思. http://blog.segmentfault.com/find…
参考文章:<深入浅出 JavaScript 中的 this> http://www.ibm.com/developerworks/cn/web/1207_wangqf_jsthis/ JavaScript的this指针为何如此让人琢磨不透.难于理解?这个问题研究了很久,总算有些眉目了.这个问题源于JavaScript是顺序执行的,是解释执行的,运行时才能动态绑定this指针.这区别于Java.C#等语言,它他们都编译后执行的,this指向当前的对象. 1.function类型变量 javasc…
说明 本系列属于进阶系列,语常用语法等不在本系列介绍范围之内. 在我刚开始做一个程序员并开发项目的时候,我总是喜欢使用开发语言的各种特性,每次m$发布新版C#的时候我总是会把开发者预览版下好,亲自体验,并期望从中获得快感,每次使用新的语言进行程序设计的时候,我总是喜欢掌控他有趣的地方,尽管很多与软件工程有悖.这似乎让我出过很多风头,别人的问题似乎没有什么能难倒我的,后来在我开始从工程领域思考问题的时候,我发现很多特点给我带来的"编程快感"引发的麻烦超过了快感本身的价值,很多地方难以被同…
在javascript中关于变量与函数的提升 一.简介 在javascript中声明变量与函数的执行步骤: 1.先预解析变量或函数声明代码,会把用var声明的变量或者函数声明的代码块进行提升操作 2.然后再进行执行操作 关于变量声明提升:用var声明的变量提升,其只是变量提升了,而没有进行赋值的提升 二.关于变量与函数提升的注意点 1.变量提升的代码演示 var a = 10;console.log(a);//10console.log(b);// undefinedvar b = 20;con…
函数声明和变量声明总是会被解释器悄悄地被“提升”到方法体的最顶部 请注意,变量赋值并没有被提升,只是声明被提升了. 函数的声明比变量的声明具有高的优先级. 下面的程序是什么结果? var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 结果是10: 那么下面这个呢? var a = 1; function b() { a = 10; return; function a() {} } b();…
引用类型:对象  数组 函数 }; var b =a ; b.age = ; console.log(a.age);// 21 传递的是地址, a,b同地址 值类型: var a =100; var b =a; b = 200; console.log(a);// 100 a和b是两个不同的地址,改变b的值不会改变a的值 typeof 运算符只能区分值类型的详细类型,不能区分除了function以外的引用类型的详细类型 console.log(typeof undefined);// undef…
原文:http://zha-zi.iteye.com/blog/2037026 下面的程序是什么结果? var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 结果是10: 那么下面这个呢? var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); 结果是1,因为函数的提升要比变量的提升有更高的优先级,所…
本文转自:http://blog.csdn.net/liang4571231/article/details/4042519 在进行js编程时,总会出现可能一些函数或者变量未定义而被引用,导致报错的情况.为了避免此类事情的发生,可以在调用前判断函数是否已经被定义. 函数: try { if(typeof(eval(funcName))=="function") { funcName(); } }catch(e) { alert("not function"); }…
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible"…
下面的程序是什么结果? var foo = 1; function bar() { if (!foo) { var foo = 10; } alert(foo); } bar(); 结果是10: 那么下面这个呢? var a = 1; function b() { a = 10; return; function a() {} } b(); alert(a); 结果是1. 吓你一跳吧?发生了什么事情?这可能是陌生的,危险的,迷惑的,同样事实上也是非常有用和印象深刻的javascript语言特性.…