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

函数

形貌

  • 示意定义一段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://segmentfault.com/a/1190000015980432
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞