JS函数、变量作用域

函数参数
函数的()中指定一个或多个形参(形式参数),多个形参之间用,号隔开,声明形参相当于在函数内部声明了对应的变量,但不赋值。在调用时在()中指定实参
?调用时解析器不会检查实参类型、数量,实参可以是任意的数据类型。
函数返回值
使用return来设置函数的返回值,作为函数的执行结果来返回
return后可以跟任意类型的值
语法:return 值

function sum(a,b,c){
 var d = a + b + c;
 return d;
}
var result = sum(1,2,3);

立即执行函数

(function(a,b){
  console.log("a = "+a);
  console.log("b = "+b)
}(xxx,xxx));

方法
函数也可以称为对象的属性,如果一个函数作为一个对象的属性保存,那么这个函数称为这个对象的方法
枚举对象的属性
使用for...in语句,对象中有几个属性,循环就执行几次,每次执行,都会将对象中的一个属性的名字赋值给变量
语法:for(var 变量 in 对象){
}

作用域:变量的作用的范围。
全局作用域

  • 直接写在<script>标签的JS代码,都在全局作用域
    --在打开是创建,在关闭时销毁
  • 全局作用域有一个对象Window,可以直接使用
  • 全局作用域,创建的变量都会作为Window对象的属性保存,创建的函数作为Window的方法保存。

变量声明提前
使用var关键字声明的变量,会在所有的代码执行之前被声明(但不会赋值),如果不适用var关键字,则变量不会被声明提前
函数声明提前
使用函数声明形式创建的函数function函数(){},会在所有的代码执行之前被创建

//会被提前
function fun(){
  console.log("xxx");
}

//不会被提前
var fun2 =  function(){

}

原文地址:https://www.cnblogs.com/Yokemadman/p/10354959.html

时间: 2024-10-13 14:08:41

JS函数、变量作用域的相关文章

关于JS函数变量作用域

这样一段代码: var a = 123 function f() { console.log(a); var a = 1; console.log(a); } 执行f(),会怎样输出呢? 你可能会想当然的第一次console.log输出的是123,也就是全局变量的值,而第二次显示是1. 但是,最先输出的是undefined. 函数的作用域始终优先于全局作用域,所以局部变量a会覆盖掉与他同名的全局变量,尽管第一次console.log的时候,a还没有被正式定义,但该变量已经存在本地空间了.即输出u

PHP和JS中变量作用域

一,PHP中变量作用域 对于大多数PHP的变量只有一个作用域.在用户自定义函数里采用局部变量作用域.所有的函数内使用的变量被设置为局部变量.例如: <?php $a=1; function test() { echo $a; } test(); ?> 这段程序不会输出任何的东西因为echo语句要输出局部变量 $a ,而函数内的 $a 从未被赋过值.你可能注意到和C语言有点小小的区别,C中全局变量可以直接在函数内引用,除非它被一个局部变量所覆盖.因为这使得人们可能不注意修改了全局变量的值.在PH

JavaScript-4.2函数,变量作用域---ShinePans

<html> <head> <meta http-equiv="content-type" content="text/html;charset=GB2312"/> <title> 4.2 函数和变量作用域 </title> <!--脚本部分--> <script type="text/javascript"> var v1,v2; v1=10; v2=20; f

javascript 闭包与函数变量作用域

浏览器事件循环工作原理 浏览器有一个事件循环用于检查事件队列,处理延时的事件.UI事件(例如:点击,滚动等),ajax回调,以及提供给setTimeout()和setInterval()的回调,都会依次被事件循环处理. 因此,当调用setTimeout()函数时,即使延迟的时间被设置为0,提供的回调也会被排队 回调会呆在队列中,直到指定的时间用完后,引擎开始执行动作(如果它当前不执行其他动作) 因此,即使setTimeout()回调被延迟0ms,它仍然会被排队,并且直到函数中其他非延迟的语句被执

js的变量作用域

js不支持块级变量作用域,而是包含它们的函数的作用域, 例如: function query() { var a = 1; for (var i = 0; i < 10; i++) { var b = i; } return b + a; } var q = query(); alert(q);// 9 + 1 = 10 也包括在Catch块 function test() { var a= 'a', b = []; b.push(a); try { throw 'exception'; } c

js学习--变量作用域

作为一名菜鸟的我,每天学点的感觉还是不错的.今天学习闭包的过程中看到作用域与作用域链这两个概念,我觉得作为一名有追求的小白,有必要详细了解下. 变量的作用域 就js变量而言,有全局变量和局部变量.这里我觉得这个按字面意思理解就行了.......下面举个例子 var message = "今天我做的糯米蒸排骨"; //定义一个全局变量 function doL(){ var ss = "侠客行很好看"; //定义一个局部变量 alert(message); //输出&

js随笔-变量作用域

1.函数中定义的变量只在函数中起作用,所以两个函数定义相同的变量互不影响 function fun(){ var i=0 } console.log(i);//i is not defined 2. 函数中内嵌函数时,内部的函数可以访问外部函数的变量,外部函数则不能访问内部的变量 function fun(){ var i=0; function fun2(){ var j=1; console.log(i); } fun2(); } fun();//0 function fun(){ var

关于javascript函数变量作用域问题

作用域 1.如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量: 2.JavaScript的函数在查找变量时从自身函数定义开始,从"内"向"外"查找.如果内部函数定义了与外部函数重名的变量,则内部函数的变量将"屏蔽"外部函数的变量.

#9.6课堂JS总结#变量作用域 date()对象 math()对象

一.变量的作用域 1.JavaScript的作用域链 首先看下下面这段代码: <script type="text/javascript"> var rain = 1; function rainman(){ var man = 2; function inner(){ var innerVar = 4; alert(rain); } inner(); //调用inner函数 } rainman(); //调用rainman函数 </script> 观察aler

js 函数 /变量/ 以及函数中形参的预解析的顺序

//js 解析分为两个阶段:预编译和执行期 //预编译:声明但是没有初始化 //声明式:funcion a(){} //赋值式:var a = function(){} //匿名函数:function(){} //-----函数之间比较 //结论 1 同一个函数声明,后来者居上 //结论 2 声明式函数要提前赋值式函数 //-----函数和变量的比较 //结论 3 函数声明提升优先级大于变量声明 函数声明要覆盖变量声明 console.log(f1)//打印的是函数 f1() //2 funct