美文网首页
函数声明及调用

函数声明及调用

作者: zy懒人漫游 | 来源:发表于2018-01-27 05:28 被阅读0次

函数调用

首先用function 声明一个函数

function sayHello(){   //sayHello  是一个函数名
  console.log('zhouyi')  //里面的是函数体
}
sayHello()  //  zhouyi  调用函数名,打印出结果,如果不调用不会打印结果

声明不必放调用前面

sayHello() 

function sayHello(){ 
  console.log('zhouyi')
}

这样也是可以的,但是中间不能有其他的函数。

函数调用

var sayHello = function(){
  console.log('zhouyi')
}
sayHello() 

在函数调用里面,声明必须放调用的前面。因为相当于把函数当成一个值,只不过值的内容是一个函数,然后调用的时候,你要有值才能去调用,所以,声明必须放调用的前面。

声明前置,

在一个作用域下,var 声明的变量和function声明的函数会前置

不加var作用

不加var 会声明一个全局变量,如果真的需要一个全局变量,也应该在最外层 作用域使用var声明。

function fn(){
  a = 1 ;
}
fn();
console.log(a);  //1

立即执行函数表达式:声明一个匿名函数,然后立即执行。这是它的2种写法

  • (function(){ /* code */ })();

  • !function(){ /* code */}();

(function(){
  var a = 1;
})()
console.log(a);//undefined 

因为a是独立作用域下的a,只是做了个声明,和console.log(a)没有半毛钱关系。

作用,隔离作用域,避免全局变量

function fn(){
  var a ;
  a =1;
  console.log(a);
}
fn()

等同于

(function(){
  var a ;
  a =1;
  console.log(a);
})()

另一种写法,

!function(){
  var a ;
  a =1;
 console.log(a);
}()
创建独立作用域,隔离外部变量,不受干扰。

注:“!”可以是任何单个符合,例如!@#¥%,不能用()、'、"这样的符号

还有种情况

function fn(i,j){}
类似于,但不是完全等价于
function fn(){
  var fn = arguments[0];
  var fn = arguments[1];
}

举个例子

var a = 100;
 !function(a){
    a =1;
 }(/*没有传参*/)
console.log(a); //100

因为a没有传参数,而且a没有打印, console.log(a)打印的是全局变量a,结果输出为100。

假如a传参了,如下所示

var a = 100;
 !function(a){
    console.log(a)// 打印的的第一个数99
 }(99)
console.log(a); //打印的的第二个数100
  • 首先第一个console.log(a)会打印99,因为是立即执行函数,会立即执行,它和外面的a没有半毛钱关系,是独立作用域下的a,然后传参99,所以输出结果为99。
  • 其次第二个console.log(a)会打印出100,是全局作用域下a的值。

同样的,再举个例子

var a = 100;
 !function(a){
    console.log(a)// 100
 }(a)

为什么是这样呢,因为console.log(a)打印出来的是函数中的a,只是后面传的参数是全局变量中的a,由于全局变量中声明了a并赋值100,所以打印出来的值也是100。立即执行函数里的a和全局变量中的a,没有半毛钱关系,只是刚好传参进去了而已。

相关文章

  • 函数声明及调用

    函数调用 首先用function 声明一个函数 声明不必放调用前面 这样也是可以的,但是中间不能有其他的函数。 函...

  • 函数声明及其用法

    函数声明: 例子:声明一个函数 传统方法调用函数: 调用成员函数: 注意:成员函数调用通过点表示法 函数参数: 具...

  • 函数声明调用

    让我们先来了解一下什么是函数如何 “艾瑞巴蒂嗨起来”。 什么是函数让我来...

  • As a Interviewer

    1,函数声明与函数表达式的区别是什么? 考察点:函数声明提升 答:函数声明在函数调用时可以提前调用,存在“函数声明...

  • js 基础

    JavaScript 函数 是对象 函数提升 提升作用域 在声明前调用。 自调用 (不能自调用声明的函数) 表达...

  • js函数和原型对象

    函数提升(Hoisting):函数可以在声明之前调用 自调用函数、函数声明、函数表达式、匿名函数、箭头函数: 自调...

  • 16. 函数与作用域

    函数声明和函数表达式的区别 函数声明 声明不必放在调用的前面 函数表达式 声明必须放到调用的前面 变量与函数的声明...

  • 函数及其作用域

    1. 函数声明和函数表达式有什么区别 是否限制函数调用位置? 函数声明:即在代码中声明一条函数,函数调用可以在声明...

  • Kotlin 函数

    函数声明 Kotlin 中的函数使用 fun 关键字声明: 函数用法 调用函数使用传统的方法: 调用成员函数使用点...

  • 函数与作用域

    1. 函数声明和函数表达式有什么区别 函数声明: 声明不必放到调用的前面 函数表达式: 声明必需放到调用的前...

网友评论

      本文标题:函数声明及调用

      本文链接:https://www.haomeiwen.com/subject/ntngaxtx.html