# 函数
* 简介函数语法
* 函数包含哪几部分
* 简述函数返回值规则
* 下面代码的执行结果为
  ```
  var x = myFunction(7, 8);      
    function myFunction(a, b) {
        return a * b;                
    }
  ```

* 简单介绍局部变量和全局变量
* 下面两段代码的执行结果分别是什么 并说明原因
  ```
  function myFunction() {
    var carName = "Volvo";
  }
  console.log(carName)

  ```
  ```
  function myFunction() {
    var carName = "Volvo";
    console.log(carName)
  }
  

  ```

* 函数如何返回值，如何接收
* 下面代码执行结果是什么  为什么

```
function sum(iNum1, iNum2) {
    return iNum1 + iNum2;
  }

```

* 下面代码执行结果是什么  为什么

```
function sum(iNum1, iNum2) {
    console.log(iNum1 + iNum2);
  }

```

* 下面代码执行结果是什么  为什么

```
function sum(iNum1, iNum2) {
    console.log(iNum1 + iNum2);
  }
sum()

```

* 下面代码执行结果是什么  为什么

  ```
    function sum(iNum1, iNum2) {
        return iNum1 + iNum2;
      }
      var iResult = sum(1,1);
    alert(iResult);	

  ```

* 下面代码执行结果是什么 为什么

  ```
    function sum(iNum1, iNum2) {
      return iNum1 + iNum2;
      alert(iNum1 + iNum2);
    }
  ```

* 下面代码的执行结果为
  ```
  function sayHi(sMessage) {
    if (sMessage == "bye") {
      return;
    }

    alert(sMessage);
  }
  ```

* 如何检测参数的个数
* 下面代码的执行结果是多少
  ```
    function howManyArgs() {
      alert(arguments.length);
    }

    howManyArgs("string", 45);
    howManyArgs();
    howManyArgs(12);

  ```
  
* 下面代码的执行结果
  ```
  function sayHi() {
  if (arguments[0] == "bye") {
    return;
  }

  alert(arguments[0]);
  }
  ```

* 下面代码的执行结果是什么
  ```
  function howManyArgs() {
  alert(arguments.length);
  }

  howManyArgs("string", 45);
  howManyArgs();
  howManyArgs(12);

  ```
* 什么是函数重载
  
* 下面代码的执行结果是什么
  ```
  function doAdd() {
    if(arguments.length == 1) {
      alert(arguments[0] + 5);
    } else if(arguments.length == 2) {
      alert(arguments[0] + arguments[1]);
    }
  }

  doAdd(10);	
  doAdd(40, 20);
  ```

* 通过new function() 的系形式重新定义下面的对象
  ```
  function sayHi(sName, sMessage) {
    alert("Hello " + sName + sMessage);
  }

  ```
  
* 编写一个函数，计算三个数字的大小，按从小到大顺序输出



* 用*实现等边三角形

* 创建函数的几种方式

* 下面代码的执行结果为
```js
sum(3,4);
sum("3",4);
sum("Hello","World");

// 定义函数：求和
function sum(a, b) {
	console.log(a + b);
}
```

* 下面代码的执行结果为
```js
function sum(a, b) {
		console.log(a + b);
	}

	sum(1, 2);
	sum(1, 2, 3);
	sum(1);
```

* 下面代码的执行结果为
```js
console.log(fn) == console.log(function fn(){alert(1)});

//定义fn方法
function fn(){
	alert(1)
};
```

* fn 和 fn()的区别

* 下面代码的执行结果为
```js
(function(a, b) {
		console.log("a = " + a);
		console.log("b = " + b);
	})(123, 456);
```

* 下面代码的执行结果为
```js
function foo() {
    console.log(arguments);
    console.log(typeof arguments);
}

foo();
```

* 如何返回函数传入的参数个数

* 下面代码的执行结果为
```js

fn(2, 4);
fn(2, 4, 6);
fn(2, 4, 6, 8);

function fn(a, b) {
    console.log(arguments);
    console.log(fn.length); 
    console.log(arguments.length); 

    console.log('----------------');
}

```

* 下面代码的执行结果为
```js
function fun() {
    console.log(arguments.callee == fun); //打印结果为true
}

fun('hello');

```

* 下面代码的执行结果为
```js
fn(2, 4);
fn(2, 4, 6);
fn(2, 4, 6, 8);

function fn(a, b) {
    arguments[0] = 99; //将实参的第一个数改为99
    arguments.push(8); //此方法不通过，因为无法增加元素
}
```

* 介绍arguments的使用
  
* 编写一个函数来验证输入的字符串是否是有效的 IPv4 地址。

  如果是有效的 IPv4 地址，返回 "IPv4" ；
  如果不是上述类型的 IP 地址，返回 "Neither" 。

IPv4 地址由十进制数和点来表示，每个地址包含 4 个十进制数，其范围为 0 - 255， 用(".")分割。比如，172.16.254.1；
