资讯专栏INFORMATION COLUMN

JavaScript 之 核心语法 [ 函数和作用域 ]

joy968 / 428人阅读

摘要:函数描述表示定义一段代码,并且可重复使用函数的定义函数声明方式字面量表达方式函数声明方式语法函数名称小括号不可省去函数体函数声明方式在定义函数时,函数体中的内容不会被执行哑吼吼调用函数使用函数名称调用函数的时候会执行函数体中的内容字面量方

函数 描述

表示定义一段JavaScript代码,并且可重复使用

函数的定义

函数声明方式

字面量表达方式

函数声明方式 语法
function 函数名称( )"小括号不可省去" {
      函数体
}
/* 函数声明方式 */
function fun() {
    /* 在定义函数时,函数体中的内容不会被执行 */
    console.log( "哑吼吼" );
}
/*
    调用函数 - 使用函数名称
     * 调用函数的时候会执行函数体中的内容
 */
fun();
字面量方式 语法
var 函数名 = function( )"小括号不可省去" {
      函数体
}
/* 字面量方式 */
var fn = function() {
    /* 在定义函数时,函数体中的内容不会被执行 */
    console.log( "吼哑哑" );
}
/*
    调用函数 - 使用函数名称
     * 调用函数的时候会执行函数体中的内容
 */
fn();
函数的参数 描述

表示定义函数时在函数名称中使用的定义( 小括号中的 )

参数只能在函数中使用

参数分为

形参 - 定义函数时使用的参数

实参 - 调用函数时使用的参数

/* 定义函数 - 形参 */
function fun( a, b ){
    /*
        在参数中:
        形参与实参个数相对应
        * 形参的个数多于实参个数时,没有对应实参的形参会显示 undefined
        * 实参的个数多于形参个数时,没有对应形参的实参会没有显示
     */
    console.log( a, b );// 显示效果:a=1,b=2
}
/* 调用函数 - 实参 */
fun( 1, 2 );
return语句

表示函数在调用结束后具有一个返回值

return语句并不是必要的

return语句一般会被编写在函数体的最后面

如果不在函数体的最后面,return语句之后的代码将不会被执行

return语句带有值会显示值,如果没有值会显示 undefined

function fun(){
    console.log( "啊哈哈" );
    return 100;
}
/* 调用函数 */
fun();// 显示 啊哈哈
/* 将函数的返回值 赋值到变量中 */
var funs = fun();
/* 显示返回值 */
console.log( funs );// 显示 100

/* return语句不在函数体最后 */
function fn(){
    console.log( "啊哈哈" );
    return;
    console.log( "呀吼吼吼" );
}
fn();// 显示 啊哈哈
var fns = fn();
console.log( fns );// 显示 undefined
作用域

变量和函数都具有作用域,用于显示可被显示访问的区域

作用域分为(变量和函数一样):全局作用域和局部作用域(函数作用域)

全局作用域:表示在函数之外的所有区域

局部作用域(函数作用域):表示在函数之内的区域

全局变量和局部变量 全局变量

是指在全局作用域中定义的变量

该变量可以同时作用在全局作用域和局部作用域(函数作用域)

局部变量

是指在函数内的变量

局部变量只能作用在当前函数中

/* 作用在全局作用域 */
var num = 100;
console.log( num );
/* 同时作用在局部作用域 */
function fun() {
    console.log( num );
}
fun();

/* 定义全局变量 */
var num1 = 100;
function fn() {
    console.log( num1 );
    /* 定义局部变量 - 只能作用于当前函数 */
    var num2 = 100;
    console.log( num2 );
}
fn();
/* 在全局作用域调用局部变量会报错 */
console.log( num2 );// 显示 num2 is not define
函数和内部函数 函数(全局函数)

是指在全局作用域中定义的函数

该函数可以同时作用在全局作用域和局部作用域(函数作用域)

内部函数(私有函数)

是指在函数内的函数

内部函数只能作用在当前函数中

/* 定义全局函数 */
function fun(){
    console.log( "啊哈哈" );
    /* 定义内部函数 */
    function fu(){
        console.log( "呀吼吼" );
    }
    fu();
}
/* 全局作用域 */
fun();
/* 在全局作用域调用内部函数会报错 */
fu();// 显示 fu is not defined

/* 定义另一个全局函数 */
function fn(){
    /* 函数中可以调用全局函数 */
    fun();
    /* 无法调用另一个函数的内部函数 - 会报错 */
    fu();// 显示 fu is not defined
}
fn();
声明提前

表示在使用变量时,先调用变量,在对变量进行定义

语法不会报错,会显示 undefined

/* 先调用未定义的变量,在随后定义,语法不会报错,会显示 undefined */
console.log( s );//显示结果:undefined
var s ;//调用后定义
/* 重新定义并赋值 */
var s = 100;
/* 显示效果 */
console.log( s );// 100
按值传递

是指将函数实参的变量值赋值给函数形参,使实参和输出结果一样

在对局部变量进行修改时,不会修改全局变量

/* 全局变量 */
var s = 100;
function f ( s ) {
    s++;// 修改局部变量
    return s;// 返回数值
}
/* 定义变量显示返回值 */
var ss = f( s );
/* 显示函数输出效果 */
console.log( ss );// 101
/* 显示全局变量 */
console.log( s );// 100

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96889.html

相关文章

  • JavaScript核心语法作用

    摘要:作用域一作用域是什么就是变量和函数所被访问范围,控制变量和函数的可见性和生命周期作用域分为全局作用域和局部作用域全局作用域是指在所有函数之外声明的变量,因为当前文档中的其他代码可以访问它局部作用域是指在函数内部声明的变量,因为该函数只能在它 JS(JavaScript)作用域;一.作用域是什么;就是变量和函数所被访问范围,控制变量和函数的可见性和生命周期作用域分为全局作用域和局部作用域...

    huashiou 评论0 收藏0
  • JavaScript 闯关记

    摘要:对象数组初始化表达式,闯关记之上文档对象模型是针对和文档的一个。闯关记之数组数组是值的有序集合。数组是动态的,根闯关记之语法的语法大量借鉴了及其他类语言如和的语法。 《JavaScript 闯关记》之 DOM(下) Element 类型 除了 Document 类型之外,Element 类型就要算是 Web 编程中最常用的类型了。Element 类型用于表现 XML 或 HTML 元素...

    mj 评论0 收藏0
  • 这一次,我们换种姿势学习 javascript

    摘要:操作符或调用函数时传入参数的操作都会导致关联作用域的赋值操作。此外可以使用和来设置对象及其属性的不可变性级别。忽视这一点会导致许多问题。使用调用函数时会把新对象的属性关联到其他对象。 前言 《你不知道的 javascript》是一个前端学习必读的系列,让不求甚解的JavaScript开发者迎难而上,深入语言内部,弄清楚JavaScript每一个零部件的用途。本书介绍了该系列的两个主题:...

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

    摘要:引子前不久我建立的技术群里一位问了一个这样的问题,她贴出的代码如下所示执行结果如下所示第一个第二个这是一个令人诧异的结果,为什么第一个弹出框显示的是,而不是呢这种疑惑的原理我描述如下一个页面里直接定义在标签下的变量是全局变量即属于对象的变量 1) 引子 前不久我建立的技术群里一位MM问了一个这样的问题,她贴出的代码如下所示: var a = 1; function hehe...

    huaixiaoz 评论0 收藏0
  • JS核心作用

    摘要:作用域链在执行上下文创建的时候,在变量对象之后创建作用域链,作用域链本身就包含变量对象,当函数被调用的时候,作用域链包含的是激活对象。我们可以用这个属性来假定作用域链的连接,它指的是链中的下一个对象。 什么是作用域 作用域是运行代码中某些特定部分的变量,函数和对象的可访问性及生命周期 javascript中的作用域 在javascript中有两种类型的作用域1.全局作用域2.局部作用域...

    Alan 评论0 收藏0

发表评论

0条评论

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