例1:
function a(num1,num2){
var result=num1+num2;
}
var result1=a(3,8);
alert(result1)
结果为:underfined
如果一个函数里面没有return 结果就是undefined
例2:
function a(num1,num2){
var result=num1+num2;
alert(result1);
}
var result1=a(3,8);
结果为:underfined
程序自上向下进行,但var result1为全局变量,会在开头自行声明一个var result1;并且未给其赋值,所以 alert(result1)输出为underfined
例3:
function a(num1,num2){
var result=num1+num2;
return result;
alert(result);
}
var result1=a(3,8);
alert(result1)
结果为:11
return result;返回的变量 其实是具体的值,并且函数中遇到return,程序直接结束跳出
例4:
function a(num1,num2){
var result=num1+num2;
alert(result);
}
var result1=a(3,8);
alert(result1)
结果为:11 underfined,
alert(result)弹出的内容 只是提示结果 不是返回值
如果一个函数里面没有return 结果就是undefined
例5:
function add(num1,num2){
var result=num1+num2;
return result;
}
var result1=add(1,2);
alert(result);
var reault2=add(2,3);
alert(result);
var reault3=add(3,4);
alert(result);
此时代码提示错误,因为result是局部变量,只在函数内部起作用,跳出函数,其值就被垃圾回收机制GC回收了
例6:
function a(num1,num2){
result=num1+num2;
return result;
}
var result=a(1,9);
alert(result);
结果为10
因为此时result为全局变量而不是局部变量
全局变量 声明以后再它的下面 都可以使用
在函数外面用var声明(不用var也行) 函数内部没有var声明的变量 会自动变成全局变量)
局部变量 只能在函数内部使用 不影响外部变量 (函数里面用var声明 和形参)
例7:
var num=10;
function a(num){
alert(num)
}
a(100);
此时的结果为100
因为100为形参,而且局部变量 优先 全局变量
注意:
var num; //全局变量
alert(num); //undefined 声明的变量 没有赋值就是undefined
alert(m); //m is not defined 报错 没有声明一个变量 直接去使用 就会报错
例8:
var num = 10; //全局变量
function say(num) { //num是局部变量
alert(num); //100
num = 200;
}
alert(num); //10
say(100); //执行完成以后 函数内部的局部变量 全部会释放,即num=200被释放
alert(num) //10
例9:
var num = 10; //全局变量
function say() {
alert(num); //在函数中遇到变量 就要看局部还是全局的 是局部就优先使用 跟全局没有任何关系
num = 200; //此时num为全局变量
}
alert(num); //10
say(); //10
alert(num) //200
例10:
function add(num1, num2, num1) {
alert(num1);
return num1 + num2 + num1;
}
var result = add(1, 2, 3);
alert(result);
结果为3 8
var result = add(1, 2, 3); 此代码的运行默认的在 alert(num1);上加上var num1 =1,num2=2,num1=3;等变量的声明代码,然后开始的num1=1被后来的num3覆盖
例11:
function add(num1, num2, num1) {
return num1 + num2 + num3;
}
var result = add(1, 2, 3);
alert(result);
结果为有错误,num3 is not be defined
因为参数的设置,默认在函数最前面声明了var num1 =1,num2=2,num1=3,而没有声明num3,就在return中调用了num3,所以会显示错误
例12:
function add(num1, num2, num3) {
return num1 + num2 + num3;//1+2+undefined
}
var result = add(1, 2);
alert(result);
结果为NaN
因为参数的设置默认在函数最前面声明了var num1 =1,num2=2,num3,num3的为undefined,所以1+2+underfined为错误,提示underfine的是一个变量类型,而不是string
例13:
function add(num1, num2, num3) {
return num1 + num2 + num3;
}
var result = add(1, "2");
alert(result);
结果为12undefined
默认在函数最前面声明了var num1 =1,num2=2,num3,num3的为undefined,又因为num2=“2”,为字符串类型,所以加号会对其进行字符串的拼接
例14:
var num3 = 10;
function add(num1, num2, num3) {
return num1 + num2 + num3;
}
var result = add(1, 2);
alert(result);
结果为NAN.
因为函数内部的num3是形参,是一个局部变量,它优先于外部的全局变量num=13,所以它仍然为未被定义的undefined
例15:
alert(username);
var username = "leson";
结果为undefined
因为在js中默认为自上而下进行的,但是 var username = “leson”;这句话会使其在最前面默认生成var username;,未被声明具体的值,所以结果为undefined
例16:
alert(num); //undefined
var num = 10;
alert(num); //10
function say() {
alert(num);
var num = 200; //此时在函数内部用 var num = 200;声明了一个局部变量,所以会在alert最上面默认生成一个没有定义类型的var num
alert(num);
}
num = 300;
say(); //undefined 200
alert(num); //30
例17:
alert(username);
let username = "leosn"; //let 局部变量 var 全局变量
结果为username is not defined 错误
因为let禁止其在最开始默认生成var username;
//let 配合{}可以构建块级作用域
var i=100;
for(let i=1;i<=10;i++){
}
alert(i);
例18:
const username = "leson";
alert(username);
username = "lili";
alert(username);
结果为一个leson
因为const表示一个常量,值不能进行改变
例:
function add(num1, num2) {
return num1 + num2;
}
const result = add(2, 8);
alert(result);
result = 100;
alert(result);
结果为10