JavaScript-函数,作用域

2018-08-13 admin

函数

函数是一段代码,只能被定义一次,但可以被执行或调用多次

定义函数

定义函数的方式有两种

/*
* 字面量/直接量方式
* var 函数名称=function(){
*        函数体
* }//定义函数时,函数体内容不会被执行
* */
/*   var name =function () {
    console.log('这是一个函数')
};
   fun();//调用函数,才能执行函数体内容*/

/*
* 函数声明方式
* function 函数名称(){
*     函数体
* }
*/
 function fun(){
     console.log('这是一个函数')
 }

函数的参数

/*   定义函数
   function 函数名称(形参){
        函数体
    }
*  定义函数时的参数是形参
*  形参类似于一个变量
*  形参默认为未定义任何指时->undefined
*///形参允许定义多个,使用逗号分开
   function fun(a,b,c) {//在函数中定义一个变量,但未初始化值
       console.log(a+b,c)
   }
/*
* 调用函数
* 函数名称(实参)
* 函数的调用->实参(值)*/
   fun(23,100);//为函数中定义的变量初始化值
/*
    形参与实参
    * 形参的个数与实参可以是一致的
      * 形参的个数多于实参的个数 -> 多余的形参没有值(默认为 undefined)
      * 实参的个数多余形参的个数 -> 多余的实参没有对应的形参
    * 形参与实参根据占位符进行一一对应
 */

return语句

函数可以包含一个返回语句(return),这不是必须的,return使函数可以作为一个值使用

/*  函数的return语句
*  并不是必要的
*  作用:作为函数的返回值
*  用法:一般在函数的最后面,但并不强制
*  */
function fun(){
    console.log('这是一个函数');
    return 23;
}
fun();//这是一个函数
console.log(fun());//这是一个函数/23
console.log(fun);//[Function:fun]

/*   return语句
*   可以吧在函数的最后面
*   但return之后的代码不会再执行
*   当return并未设置值时,结果为undefined*/
function fn(){
    console.log('这是return语句之前...');
    return;
    console.log('这是return语句之后...');
}
var result = fn();
console.log(result);//这是return语句之前.../undefined

预定义函数

JavaScript预定义了一组函数,又称为全局函数,可以直接使用

clipboard.png

eval()函数

eval()函数用于执行以字符串形式(Sting)出现的JavaScript代码。

// 定义一个字符串 - 文本内容是JavaScript代码
var str = 'console.log("测试...")';
// console.log(str);
/*
    eval()函数
    * 作用 - 将一个字符串类型的JavaScript代码转换为真正的JavaScript代码,并且执行
    * 问题 - 安全问题
 */
eval(str);//测试

作用域

变量与函数都有作用域。作用域就是变量和函数可以被访问的范围,可以分为全局作用域和函数作用域(局部作用域)。 定义在全局作用域,可以在任何位置访问,局部作用域只能在指定函数内部访问

变量的作用域

/*  全局作用域(函数作用域之外的范围)-全局变量
     全局变量的作用域->全局作用域+函数作用域
*   */
var v1 = 23;
console.log(v1);

function fun() {
    /*   函数作用域-局部变量
*    局部变量的作用域-当前函数内部
*    */
    var v2 = 100
    console.log(v1)
    console.log(v2)
}
fun();//23/100
//全局作用域不能访问局部作用域
console.log(v2);//v2 is not defined

声明提前

可以先引用变量再声明变量,因为变量的声明会被默认在函数和语句之前,相当于先声明了一个变量但为初始化值,输出为undefinef

console.log(v1);//undefined
var v1 = 100;
console.log(v1);//100

按值传递

按值传递就是讲实参变量复制一份传递给形参变量,实参不变

/*定义一个全局变量*/
var v1 = 23;
/*定义一个函数*/
function fun(v1){
    v1++;
    console.log(v1)//24
}
/*调用指定函数,实参传递的是全局变量的值*/
fun(v1);//24
/*调用指定全局变量*/
console.log(v1);//23

原文链接:https://segmentfault.com/a/1190000015980255

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处。

转载请注明:文章转载自 JavaScript中文网 [https://www.javascriptcn.com]

本文地址:https://www.javascriptcn.com/read-37827.html

文章标题:JavaScript-函数,作用域

相关文章
javascript是什么意思
avaScript是Netscape开发的一个对象脚本语言,它使用在世界各地数以百万计的网页和服务器应用程序上。 网景的JavaScript是ecma - 262版的标准脚本语言,和公布的标准只有轻微的差异。 与广为流行的错误理解相反,Ja...
2015-11-12
21天学通javascript
简介: 本书是Javascript入门教程。Javascript是Web开发中应用最早、发展最成熟、用户最多的脚本语言。其语法简洁,代码可读性在众多脚本语言中最好,它在使用时不用考虑数据类型,是真正意义上的动态语言。本书总分为四篇,共21章...
2015-11-16
JavaScript的组成
一个完整的JavaScript由3个部分组成:核心(ECMAScript) 文档对象模型(DOM) 浏览器对象模型(BOM) ECMAScript 描述了该语言的语法和基本对象 ; DOM 描述了处理网页内容的方法和接口 ; BOM 描...
2015-11-12
canvas图片绘制跨域问题解决方案Tainted canvases may not be exported
图片跨域问题的一般解决方法 当使用canvas绘制网络图片的时候,经常会出现“Tainted canvases may not be exported”报错,上网搜一下解决方案,应该给的都是给img添加crossOrigin属性,尝试了一下...
2018-04-19
JavaScript 事件流、事件处理程序及事件对象总结
JS与HTML之间的交互通过事件实现。事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用监听器(或处理程序)来预定事件,以便事件发生时执行相应的代码。这种在传统软件工程中被称为观察员模式,支持页面的行为与页面的外观之间的松散耦合。...
2017-04-05
JavaScript变量的声明
声明变量 变量在脚本中的首次亮相是在其声明中。 在变量首次出现时将会在内存中设置它,因此您稍后可在脚本中引用它。 应在使用变量之前先声明变量。 可以使用 var 关键字实现此目的。 <span id=“mt9” class=“sent...
2015-11-12
7个提高效率的JavaScript调试工具
鐜板湪鐨凧avaScript浜嬪疄涓婂凡鐒舵垚涓轰簡娴佽�岀殑web璇�瑷€锛屽嵆浣垮畠骞朵笉瀹岀編銆傚緢澶氱▼搴忓憳涓嶅枩娆㈢敤JavaScript鍐欎唬鐮侊紝鏄�鍥犱负鍐欏埌鍚庢潵鎬讳細鍑虹幇鍚勭�嶈帿鍚嶅叾濡欑殑bug锛岃€屼笖鍦ㄥ紑...
2015-11-11
JavaScript短路原理精简代码
js中||和&&的特性帮我们精简了代码的同时,也带来了代码可读性的降低,虽然高效,但请灵活使用。 在js逻辑运算中,0、""、null、false、undefined、NaN都会判为false,其他都为t...
2015-11-12
7个让JavaScript变得更好的注意事项
随着浏览器性能提高,伴随着新的HTML5的编程接口的稳步采用,网页上的JavaScript的音量在逐渐增加。然而,一个写得不好的程序编码却拥有着打破整个网站,让用户为之沮丧和驱赶潜在客户的潜力。 开发人员必须使用所有供他们任意使用的工具和技...
2015-11-12
javaScript+turn.js实现图书翻页效果实例代码
为了实现图书翻页的效果我们在网上可以看到很多教程 在这里推荐turn.js 网上的turn.js 有api 不过是英文的  很多人看起来不方便 .关于代码也是奇形怪状在这里我将详细讲解如何使用turn.js实现翻页效果 ,本篇文章只是讲解 ...
2017-03-16
回到顶部