JavaScript学习之路06_函数
来源:互联网 发布:mac如何缩小照片kb 编辑:程序博客网 时间:2024/05/21 14:29
函数是一种语言必不可少的,函数也是很灵活的,面向过程语言,例如C,它的基本单位就是函数,但是面向对象的语言,基本单位是类,但是函数还是解决方法必不可少的,他是对一种问题的抽象,例如1+2+3…..+100,数学中使用∑,它代表了对这种逻辑的抽象表示,函数也使一样,是对相同功能的一个提炼,也是对一种功能的抽象。
和之前一样,也是从知识点入手,代码如下:
//定义一个函数,这里面是局部变量,如果直接调用,会提示ReferenceError,未定义function foo(){ var x = 1; x += 2;} console.log(x);VM271:2 Uncaught ReferenceError: x is not defined(…)//基本上相同的问题function foo(){ var x = 1; function inner(){ var y = x + 2; } }console.log(y);//变量的搜索顺序,从内到外,如果一直没有,提示undefinedfunction foo() { var x = 1; function bar() { var x = 'A'; alert('x in bar() = ' + x); // 'A' } alert('x in foo() = ' + x); // 1 bar();}//定义在函数内的是局部变量function foo(){ var x = 1; alert(x);}//这里要特别注意的一点//在JavaScript函数中,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部:function foo(){ var x = 'hello,'+y; alert(x); var y = 'bob';}foo();//输出结果是 hello,undefined//为什么呢?上面代码和下面代码相同:Javascript会先扫描整个函数体,将定义的变量全部提到上面,但是y在使用的时候还没有赋值,所以这时候y还是undefinedfunction foo(){ var y; var x = 'hello,'+y; alert(x); y = 'bob';}//全局变量windowvar course = "hello.cheng";alert(course);//hello.cheng//使用windowalert(window.course);//hello.cheng//因为course是全局变量,所以使用其本身和window都是没有错的,只不过在正常情况下会将window省略function foo(){ var course='hello'; alert(course); alert(window.course);}foo();//hello//hello这里会调用之前的全局变量function fo(){ var cours='hello'; alert(cours); alert(window.cours);}fo();//hello//undefined//alertwindow.alert('alert也是一个全局变量');//alert也是一个全局变量var old_alert = window.alert;old_alert('这也是正确的');//这也是正确的old_alert = function(){}old_alert('打印为空'); //undefinedold_alert = window.alert;window.alert = function(){}(){}window.alert('这样是不对的');//undefinedwindow.alert = old_alert;window.alert('alert的功能又回来了');//alert的功能又回来了名字空间,减少因为同名而带来的冲突//定义一个全局变量var MAPPER= {};//设置name属性MAPPER.name = 'myname';//设置version属性MAPPER.version = 1.0;//设置其它函数MAPPER.foo =function(){ console.log('foo函数');}//调用函数MAPPER.foo();//foo函数//调用属性,都是全局变量MAPPER.name;"myname"//作用域,这是因为var的作用域是整个函数,对于这种块级的不太合适function foo(){ for(var i=0; i<100; i++){} console.log(i);//101}//块级作用域function foo(){ for(let i = 0; i<100; i++){} console.log(i);//SyntaxError: Block-scoped declarations }//定义常量//const也是和let一样的作用域是块级作用域const PI = 3.14;PI = 3;3console.log(PI);//3.14
0 0
- JavaScript学习之路06_函数
- JavaScript学习之路08_高阶函数
- JavaScript学习之路10_箭头函数
- JavaScript学习之路01_准备
- JavaScript学习之路02_数据类型
- JavaScript学习之路04_对象
- JavaScript学习总结_四.函数
- Javascript学习笔记_箭头函数
- JavaScript初探之二_函数特性
- JavaScript学习之路03_字符串和数组
- JavaScript学习之路09_闭包
- javascript 学习之 函数 - 参数
- JavaScript学习之 匿名函数
- javascript学习之函数章节
- JavaScript学习笔记之函数
- JavaScript学习之常用函数
- javascript函数之arguments学习
- JavaScript学习笔记_构造函数的继承
- 以烧录yocto镜像为例--详细解析freescale MFGTools烧录原理
- Android setLayerType 硬件加速问题
- XmlRootElement JAXB注解
- UVA624
- 网页中嵌入QQ和邮箱
- JavaScript学习之路06_函数
- 用Winform的WebBrowser开发可设置代理服务器的浏览器
- 【UML】 行为图
- Centos6.4下OpenVPN服务端安装与部署详解
- 【iOS】自定义导航栏(一)
- 继续收集Docker书
- 如何在Cocos2D游戏中实现A*寻路算法(一)
- 列车调度-栈混洗
- Java权限修饰符解析