变量定义和函数定义作用域

如何定义一个全局变量:

在 js 直接定义一个变量,而并不是在一个函数体内,他就是全局变量,

var num1; // 这是一个全局变量
num = 0;
var num1 = 0; // 这是一个全局变量
function myFn () {
 num3 = 0; // 这也是一个全局变量
}


如何定义一个局部变量:

在 js 中的函数块内用 var 定义一个变量

function myFn () {
var num = 0; // 这是一个局部变量
 num3 = 0; // 没有用 var,这是一个全局变量
}


变量的作用域:

全局可以在全局调用,局部变量可以在定义它的函数块内调用,大家都知道,不做举例了。

但如果变量局部变量和全局变量名字冲突,就会就近调用当前函数中定义的局部变量。

var num = 1;
function myFunction(){
 var num = 0;
 alert(num)
}
myFunction()// alert 弹出的就会是 0,不是 1
​
for(var i=0;i<10;i++){
  var num = 0;
}


函数的定义:

//定义一个函数, 关键词 function
function myFunction(){
 alert("这是一个函数体");
 return 3+5;
}
var num = myFunction();
var num1 = myFunction;
// 会弹出几次窗口


函数的应用:

function makeCounter() {
  var i = 0;
 return function(){
  return ++i;
 }();
}
var num = makeCounter();
var num1 = makeCounter();
alert("num:"+num+" num1: "+num1);


函数在三目运算符中应用:

var needRandom = true; // 需要给文化随机数
alert(needRandom?myFn():-1);
function myFn(){
  return parseInt(Math.random()*256)
}
​
var i = 2;
var j = 3;
i>j?
  function(){
alert("条件为真")
}:
 function(){
alert("条件为假")
};


用赋值表达式定义函数:

var myFn = function lala(){
  alert("完成了调用")
};
lala(); // 能完成函数的调用吗?

答案是不能的,用赋值表达式把一个具名函数赋值给一个变量,就不可以在函数体外对函数进行调用用了

var myFn = function lala(){
  alert("完成了调用")
};
myFn(); // 在函数外部,通过对变量的调用,才可以完成对函数的调用