资讯专栏INFORMATION COLUMN

JavaScript-函数,作用域

levinit / 1282人阅读

摘要:定义一个字符串文本内容是代码测试函数作用将一个字符串类型的代码转换为真正的代码,并且执行问题安全问题测试作用域变量与函数都有作用域。作用域就是变量和函数可以被访问的范围,可以分为全局作用域和函数作用域局部作用域。

函数

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

定义函数

定义函数的方式有两种

/*
* 字面量/直接量方式
* 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预定义了一组函数,又称为全局函数,可以直接使用

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://www.ucloud.cn/yun/96892.html

相关文章

  • JavaScript深入之词法作用和动态作用

    摘要:作用域作用域是指程序源代码中定义变量的区域。采用词法作用域,也就是静态作用域。而与词法作用域相对的是动态作用域,函数的作用域是在函数调用的时候才决定的。前面我们已经说了,采用的是静态作用域,所以这个例子的结果是。 JavaScript深入系列的第二篇,JavaScript采用词法作用域,什么语言采用了动态作用域?两者的区别又是什么?还有一个略难的思考题,快来看看吧。 作用域 作用域是指...

    gclove 评论0 收藏0
  • 理解JavaScript的核心知识点:作用

    摘要:也毫不例外,但在中作用域的特性与其他高级语言稍有不同,这是很多学习者久久难以理清的一个核心知识点。主要使用的是函数作用域。 关于作用域:About Scope 作用域是程序设计里的基础特性,是作用域使得程序运行时可以使用变量存储值、记录和改变程序的状态。JavaScript 也毫不例外,但在 JavaScript 中作用域的特性与其他高级语言稍有不同,这是很多学习者久久难以理清的一个核...

    HelKyle 评论0 收藏0
  • 深入学习js之——词法作用和动态作用

    摘要:在中的应用采用词法作用域,也就是静态作用域。那什么又是词法作用域或者静态作用域呢请继续往下看静态作用域与动态作用域因为采用的是词法作用域函数的作用域在函数定义的时候就决定了。 开篇 当我们在开始学习任何一门语言的时候,都会接触到变量的概念,变量的出现其实是为了解决一个问题,为的是存储某些值,进而,存储某些值的目的是为了在之后对这个值进行访问或者修改,正是这种存储和访问变量的能力将状态给...

    shiweifu 评论0 收藏0
  • 谈谈javascript语法里一些难点问题(二)

    摘要:讲作用域链首先要从作用域讲起,下面是百度百科里对作用域的定义作用域在许多程序设计语言中非常重要。原文出处谈谈语法里一些难点问题二 3) 作用域链相关的问题 作用域链是javascript语言里非常红的概念,很多学习和使用javascript语言的程序员都知道作用域链是理解javascript里很重要的一些概念的关键,这些概念包括this指针,闭包等等,它非常红的另一个重要原因就...

    Enlightenment 评论0 收藏0
  • JavaScript作用和闭包

    摘要:依然持有对该作用域的引用,而这个引用就叫作闭包。循环和闭包正常情况下,我们对这段代码行为的预期是分别输出数字,每秒一次,每次一个。 一、作用域 作用域共有两种主要的工作模型:第一种是最为普遍的,被大多数编程语言所采用的词法作用域,另外一种叫作动态作用域; JavaScript所采用的作用域模式是词法作用域。 1.词法作用域 词法作用域意味着作用域是由书写代码时函数声明的位置来决定...

    animabear 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<