var函数

javascript基础

青春壹個敷衍的年華 提交于 2019-12-20 02:34:48
javascript学习 通常,我们需要在某个事件发生时执行代码,比如当用户点击按钮时。 如果我们把 JavaScript 代码放入函数中,就可以在事件发生时调用该函数。 操作html document.getElementById(id) 例子:document.getElementById("demo").innerHTML="Hello World"; 向 id="demo" 的 HTML 元素输出文本 "Hello World" 写到文档输出 document.write("<p>我的第一段 JavaScript</p>"); 请使用 document.write() 仅仅向文档输出写内容。 如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖 在 JavaScript 中,用分号来结束语句是可选的。 javascript代码块 function myFunction() { document.getElementById("demo").innerHTML="Hello World"; document.getElementById("myDIV").innerHTML="How are you?"; } javascript注释 单行注释:// 多行注释以 /* 开始,以 */ 结尾。 行末也可以注释 javascript变量 var

JavaScript高阶函数

情到浓时终转凉″ 提交于 2019-12-20 00:45:52
1高阶函数 - 函数可以作为参数 - 函数可以作为返回值 1.1 作为参数 function eat (callback) { setTimeout(function () { console.log('吃完了') callback() }, 1000) } eat(function () { console.log('去唱歌') }) 1.2 作为返回值 function genFun (type) { return function (obj) { return Object.prototype.toString.call(obj) === type } } var isArray = genFun('[object Array]') var isObject = genFun('[object Object]') console.log(isArray([])) // => true console.log(isArray({})) // => true 1.3 函数闭包 function fn () { var count = 0 return { getCount: function () { console.log(count) }, setCount: function () { count++ } } } var fns = fn() fns.getCount()

javascript变量声明提升(hoisting)

青春壹個敷衍的年華 提交于 2019-12-19 09:28:54
javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到 当前作用域 的最前面。 先看一段代码 1 2 3 4 5 var v = "hello" ; ( function (){ console.log(v); var v = "world" ; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v。代码做少些变动 1 2 3 4 5 var v = "hello" ; if ( true ){ console.log(v); var v = "world" ; } 输出结果为"hello",说明 javascript是没有块级作用域的 。 函数是JavaScript中唯一拥有自身作用域的结构。 第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于: 1 2 3 4 5 6 var v = "hello" ; ( function (){ var v; //declaration hoisting console.log(v); v = "world" ; })(); 声明、定义与初始化 声明宣称一个名字的存在,定义则为这个名字分配存储空间,而初始化则是为名字分配的存储空间赋初值。 用C+

谈javascript变量声明

ぐ巨炮叔叔 提交于 2019-12-19 09:28:42
之前的面试中遇到过一道面试题 var a =10;(function(){ console.log(a); var a =20;})() 短短5行代码log的结果是什么? 如果把 var a = 20; 和 console.log(a) 语句顺序对调呢? 这道题目的答案是 undefined 。不是10。 关键在于javascript的变量声明有一个hoisting机制,变量声明永远都会被提升至作用域的最顶端(注意测试还只是声明,还没有赋值)。其实上面的语句相当于: var a =10;(function(){var a;//在这里对变量hoisting,先声明 console.log(a); a =20;//再赋值})() 再精简一点: bla =2var bla;// 这是分割线,上下代码的效果其实是一样的var bla; bla =2; 也就是先使用,再声明(注意是声明,还没有赋值),这样一来,声明和赋值就被分开来了。所以最佳实践都推荐最好在函数的顶端把需要使用的变量首先声明一遍。 同理,我们可以理解下面的代码也是会报错的 f()//明显这里有错,因为f还没有被赋一个函数var f =function(){ console.log("Hello");} 但有一个问题,如果将上例f的函数声明修改一下,还会报错吗 f()//可以运行吗?function f(){ console

谈javascript变量声明

一世执手 提交于 2019-12-19 09:28:15
之前的面试中遇到过一道面试题 var a =10;(function(){ console.log(a); var a =20;})() 短短5行代码log的结果是什么? 如果把 var a = 20; 和 console.log(a) 语句顺序对调呢? 这道题目的答案是 undefined 。不是10。 关键在于javascript的变量声明有一个hoisting机制,变量声明永远都会被提升至作用域的最顶端(注意测试还只是声明,还没有赋值)。其实上面的语句相当于: var a =10;(function(){var a;//在这里对变量hoisting,先声明 console.log(a); a =20;//再赋值})() 再精简一点: bla =2var bla;// 这是分割线,上下代码的效果其实是一样的var bla;bla =2; 也就是先使用,再声明(注意是声明,还没有赋值),这样一来,声明和赋值就被分开来了。所以最佳实践都推荐最好在函数的顶端把需要使用的变量首先声明一遍。 同理,我们可以理解下面的代码也是会报错的 f()//明显这里有错,因为f还没有被赋一个函数var f =function(){ console.log("Hello");} 但有一个问题,如果将上例f的函数声明修改一下,还会报错吗 f()//可以运行吗?function f(){ console

Js作用域与作用域链详解

流过昼夜 提交于 2019-12-19 09:27:52
一直对Js的作用域有点迷糊,今天偶然读到 JavaScript 权威指南,立马被吸引住了,写的真不错。我看的是第六版本,相当的厚,大概1000多页,Js博大精深,要熟悉精通需要大毅力大功夫。 一:函数作用域 先看一小段代码: [javascript] view plain copy var scope= "global" ; function t(){ console.log(scope); var scope= "local" console.log(scope); } t(); (PS: console.log()是firebug提供的调试工具,很好用,有兴趣的童鞋可以用下,比浏览器+alert好用多了) 第一句输出的是: "undefined",而不是 "global" 第二讲输出的是:"local" 你可能会认为第一句会输出:"global",因为代码还没执行var scope="local",所以肯定会输出“global"。 我说这想法完全没错,只不过用错了对象。我们首先要区分Javascript的函数作用域与我们熟知的C/C++等的块级作用域。 在C/C++中,花括号内中的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的。而Javascript压根没有块级作用域,而是函数作用域. 所谓函数作用域就是说:-

javascript变量声明 及作用域

扶醉桌前 提交于 2019-12-19 09:27:00
javascript变量声明提升 javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到 当前作用域 的最前面。 先看一段代码 1 2 3 4 5 var v = "hello" ; ( function (){ console.log(v); var v = "world" ; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v。代码做少些变动 1 2 3 4 5 var v = "hello" ; if ( true ){ console.log(v); var v = "world" ; } 输出结果为”hello”,说明 javascript是没有块级作用域的 。 函数是JavaScript中唯一拥有自身作用域的结构。 第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于: 1 2 3 4 5 6 var v = "hello" ; ( function (){ var v; //declaration hoisting console.log(v); v = "world" ; })(); 声明、定义与初始化 声明宣称一个名字的存在,定义则为这个名字分配存储空间

javascript变量声明提升

丶灬走出姿态 提交于 2019-12-19 09:26:37
https://www.cnblogs.com/silentjesse/p/4024536.html javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到 当前作用域 的最前面。 先看一段代码 1 2 3 4 5 var v = "hello" ; ( function (){ console.log(v); var v = "world" ; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v。代码做少些变动 1 2 3 4 5 var v = "hello" ; if ( true ){ console.log(v); var v = "world" ; } 输出结果为”hello”,说明 javascript是没有块级作用域的 。 函数是JavaScript中唯一拥有自身作用域的结构。 第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于: 1 2 3 4 5 6 var v = "hello" ; ( function (){ var v; //declaration hoisting console.log(v); v = "world" ; })(); 声明、定义与初始化

深入理解 JavaScript 变量的作用域和作用域链

人走茶凉 提交于 2019-12-19 09:26:06
一个变量的作用域(scope)是程序源代码中定义这个变量的区域。简单的说,作用域就是变量与函数的可访问范围。全局变量拥有全局作用域,在JavaScript代码中的任何地方都有定义。局部变量是在函数体内声明而且只作用在函数体内部以及该函数体的子函数的变量。下面我们对全局作用域和局部作用域来做一个深入的理解。   1. 全局作用域(Global Scope)   全部变量拥有全局作用域,在代码的任何地方都有定义,一般来说以下几种情形拥有全局作用域:   (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如: 1 var scope="global"; //声明一个全局变量 2 function checksope(){ 3 function showglobal(){ 4 alert(scope); //弹窗全局变量 5 } 6 showglobal(); 7 } 8 checksope() // global 内部函数可以访问全局变量 (2)所有末定义直接赋值的变量自动声明为拥有全局作用域,例如: 1 function checksope(){ 2 var scope="local"; 3 scopeglobal="global"; 4 alert(scope); 5 } 6 checksope(); // local 7 alert(scopeglobal); //

JavaScript之函数作用域

[亡魂溺海] 提交于 2019-12-19 09:25:47
   有过类似C语言编程经验的同学应该都知道“块级作用域(block scope)”:花括号内的每一段代码都具有各自的作用域,而且在声明它们的代码段之外是不可见的。而在JavaScript中是没有块级作用域的,JavaScript取而代之地使用了“函数作用域(function scope)”:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。   光用文字解释平白无味,先来段让你为之一振的代码: function myTest(num){ var i = 0; if(num == 222){ var j = 0; for(var k=0; k<2; k++){ console.log(k); } console.log(k); } console.log(i); console.log(j); console.log(k); console.log(m); } myTest(111);   请认真阅读代码,仔细思考,认真回答问题。下面给出浏览器中运行的结果,检验下自己的答案吧!   如果你完全回答正确,并且已经明白所有原因,那么就没必要看下去了;如果你还未明白原因并且有一颗好奇、意欲一探究竟的心,那么就下来就要认真看完本博客了。   既然不懂,那就再继续认真看解释呗:JavaScript的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的