js 函数学习

1 函数声明和函数表达式

函数声明是通过命名的方式定义函数,函数表达式是匿名的方式定义函数(函数是在特定的环境下执行代码的对象)

function a() {
console.log(‘a‘);
}
a();  //函数声明

var a = function() {
console.log(‘a‘);
};
a();//函数表达式

二者的区别是函数声明的方式会得到提升 也就是可以在函数的声明语句之前调用函数

a();
function a() {
console.log(‘a‘);
}//这样不会报错

函数表达式就不可以

a();
var a = function() {
console.log(‘a‘);
}; //会报错 a未定义

2 arguments对象

function test() {
console.log(arguments[0],arguments[1],arguments[2],arguments.length);
}

test(1,2,3); //1 2 3 3

使用arguments对象可以获得相应的实参

还有另一种用法

function factorial(n) {
if(n <= 1) {
return 1;
} else {
return n*arguments.callee(n-1);
}
}
console.log(factorial(5));

通过arguments.callee获得正在执行的function对象的引用(很不错的用法)

3 作用域

var a = 100;

function test() {
console.log(a);

var a = 20;
console.log(a);
}
test();//undefined 20

我开始以为第一个a会访问函数外面的全局变量,其实不是,这是因为在函数内部声明的var a的作用域是整个函数而当第一次访问它的时候它并没有被赋值

上面的代码相当于

var a = 100;

function test() {
var a;
console.log(a);

var a = 20;
console.log(a);
}
test();

javascript中也不存在块级作用域,但是使用let语句可以实现块级作用域的效果

var a = 10;
{
let a = 100;
console.log(a);//100
}
console.log(a);//10

时间: 2024-07-30 12:43:37

js 函数学习的相关文章

JS函数学习(2)

JavaScript的函数不但是"头等公民",而且可以像变量一样使用,具有非常强大的抽象能力 函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回.因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑. 如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined. 定义(2) var abs = function (x) { if (typeof x !== 'number') { throw 'Not a number'; } i

JavaScript学习03 JS函数

JavaScript学习03 JS函数 函数就是包裹在花括号中的代码块,前面使用了关键词function: function functionName() { 这里是要执行的代码 } 函数参数 函数的参数可以任意多个,不用声明变量类型,只用给出变量名: function myFunction(name, job) { 这里是要执行的代码 } 函数返回值 在函数中使用return语句,函数会停止执行,返回调用它的地方. 函数的返回值也不用声明类型,直接返回即可. function myFuncti

JS入门学习,写一个时钟~

<!-- 耽搁了几天,于是又继续回到JS的学习了~~ 各种头大,加油吧... --> <!doctype html><html><head> <title>数码时钟</title> <meta charset="gb2312"> <style type="text/css"> *{ padding:0; margin:0;} body{background:rgb(0,2

Node.js知识点学习

Node.js知识点学习 一.基本概念 Node.js,或者 Node,是一个可以让 JavaScript 运行在服务器端的平台.可以说,Node.js开创了javascript模块化开发的先河,早期的javascript需求都很简单,基本都是写成函数的,然后是面向过程的写法,后来慢慢的引入面向对象开发思想,再后来就慢慢写成 类.最后node.js的出现才开始有了js模块化开发的概念,这使得臃肿的js代码免去了命名冲突等一系列开发难题. Node最大的特点就是采用了异步式I/O与事件驱动的架构设

js数组学习整理

原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); //长度为3 var colors = new Array('red','blue');//初始化 其中,在声明数组的时候,去掉new操作符,也可以. 还有一种初始化数组的方式,使用数组字面量表示法 . 数组字面量由一对包含数组项的方括号表示,多个数组项之间用逗号隔开. var colors = [ '

js入门学习~ 运动应用小例

要实现的效果如下: 鼠标移入各个小方块,实现对应的效果(变宽,变高,移入透明,移出恢复)~~ (且各运动相互之前不干扰)  主要是练习多个物体的运动框架~~ ----------------------------------------------------js代码如下 ----------------------------------------------------- //执行函数window.onload = function(){ //声明控制变量 var aDiv = docu

js基础学习笔记(二)

2.1  输出内容(document.write) document.write() 可用于直接向 HTML 输出流写内容.简单的说就是直接在网页中输出内容. 第一种:输出内容用“”括起,直接输出""号内的内容. <script type="text/javascript"> document.write("I love JavaScript!"); //内容用""括起来,""里的内容直接输出.

js基础学习笔记(一)

* 在js编写过程中,尽量保持统一使用单引号 'XXXX': * 所有变量都要声明 var,避免全局函数调用的冲突: 1.1    输出内容 docment.write(‘aileLi’); 改变某ID元素样式 docment.getElementById(‘ID’).style.color=’样式参数’; 1.2   输出弹出框 alert(‘aileLi’); 1.5  什么是变量?  从字面上看,变量是可变的量: 从编程角度讲,变量是用于存储某种/某些数值的存储器. 定义变量使用关键字va

Ext JS 6学习文档–第1章–ExtJS入门指南

Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少.google 搜索资料时找到了一本国外牛人写的关于 ExtJS 6 的电子书 [Ext JS 6 By Example].这份资料在 PACKT 上卖 35.99 刀的,当然了万能的 google 还是帮我下载到了 PDF 文档.大概看了一下,讲的很详细,例子也比较简单,容易理解,现我准备利用工作之余翻译这份文档,为自己学习加深理解,也希望能帮助更多的人学习.