JS基础:函数
函数声明和函数表达式
在 JS 中定义函数的方式有两种:一种是函数声明,一种是函数表达式。
例如:
//函数声明
function fun() {
...
}
//函数表达式
var f = function() {
...
}
它们的区别在于 JS 会把函数声明提升到作用域顶部,而函数表达式只有在执行到该语句时才会生效
关于函数的其他注意事项:
1、函数名后面跟圆括号 "()" 表示立即执行该函数,例如:
var test = fun(); //表示执行 "fun" 这个函数,并将返回值赋值给 "test" 变量
var test = fun; //表示将 "fun" 函数的指针赋值给 "test" 变量,"test" 是该函数的一个引用
2、函数的 “arguments” 对象是一个参数数组,可以使用 “arguments” + 下标的方式访问传入函数中的参数
使用匿名自执行函数模拟块级作用域
JS 中只有全局作用域和函数级作用域,并没有 C++ 那种花括号包裹起来的块级作用域,但是可以通过匿名自执行函数模拟块级作用域
例如:
(function() {
...
})();
以上代码定义并立即调用了一个匿名函数,将这个匿名函数包含在一对圆括号中是因为 "()" 这个运算符只对函数表达式有效,而 "function" 是 JS 中的一个关键字,位于句首表示函数声明,是不能被执行的。
高阶函数
高阶函数是指至少满足下列条件之一的函数:
1、函数可以作为参数被传入
2、函数可以作为返回值输出
例如:
var isString = function(obj) {
return typeof(obj) == 'string';
}
var isNumber = function(obj) {
return typeof(obj) == 'number';
这两个用于判断数据类型的函数中的大部分代码都是可以重复利用的,如果以后还要扩展的话总是需要重新定义一个函数,而使用高阶函数就可以避免这些问题
例如:
function isType(type) {
return function(obj) {
return typeof(obj) == type;
}
}
var isString = isType('string');
var isNumber = isType('number');
JS基础:函数的更多相关文章
- JS基础——函数的创建和使用
在JS中函数在使用时实质上和我们平时学习的编程语言中的函数类似,它相同也具有函数名,參数,返回值,函数体等这些寻常函数所具有的内容.可是作为一种脚本语言,它确实也有自己不一样的地方. 一.创建 < ...
- JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
前 言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...
- JavaScript基础一(js基础函数与运算符)
[使用js的三种方式] 1.在HTML标签中,直接内嵌js(并不提倡使用) <button onclick=" alert('点就点')"> 点我啊</butto ...
- js基础 -函数
函数 定义 var a =function (){...}; 匿名函数方式定义function a(){} 直接定义 函数的参数arguments 可以接收任意个参数,是个像数组的内容,可for in ...
- js基础-函数基础
js 先对函数进行解析 然后在执行函数 定义一个函数 实现求两个数的乘 function mult(a,b){ return a*b; } mult(1,3) 计算1 - n 的和 封装成函数 fun ...
- js基础-函数-var和let的区别
javaScript简介 javaScript历史 1995年,Netscape公司是凭借Navigator浏览器成为当时第一代互联网公司. 网景公司希望在HTML界面上加一点动态效果,于是叫Bren ...
- JS基础函数
函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块 <script> function demo(){ var a = 10; var b = 25; var sum = a + ...
- js 基础 函数传值
让我忽略的函数传值问题 function box(num){ num += 10; // num(有色的num) 实际就是arguments[0] ,如果参数没有num,则函数体的num(有色的nu ...
- js基础——函数
1.函数声明:通过函数可封装任意多条语句,且可在任意地方.任何时候调用执行. eg. function box(){//无参函数 alert("只有函数被调用,我才会被执行&quo ...
- JS基础-全方面掌握继承
前言 上篇文章详细解析了原型.原型链的相关知识点,这篇文章讲的是和原型链有密切关联的继承,它是前端基础中很重要的一个知识点,它对于代码复用来说非常有用,本篇将详细解析JS中的各种继承方式和优缺点进行, ...
随机推荐
- 使用Jquery1.9 版本 来实现全选
在使用Jquery实现全选以及反选的时候, 使用attr()实现的时候,在浏览器第一次运行可以全选,但是第二次再全选,不管用. 通过查找资料,用 prop()方法代替attr()方法就行了. 注意: ...
- IT实习总结-上海的实习的日子
在上海实习两个多月,从找工作,到面试,最后到创业公司工作,体会了一个人在外工作的那种工作时的压力与双休时的寂寞,有时甚至有点迷惘,可能这就是生活,每个人都会经历,在经历的过程中会有不同的味道. 说说我 ...
- image和TFRecord互相转换
关说不练假把式.手上正好有车牌字符的数据集,想把他们写成TFRecord格式,然后读进来,构建一个简单的cnn训练看看.然后发现准确率只有0.0x.随机猜也比这要好点吧.只能一步步检查整个过程.暂时想 ...
- basename - 从文件名中剥离目录和后缀
总览 (SYNOPSIS) basename NAME [SUFFIX] basename OPTION 描述 (DESCRIPTION) 显示 去掉 目录成分 后的 NAME. 如果 指定了 SUF ...
- ubuntu 网卡配置
- vue中滚动页面,改变样式&&导航栏滚动时,样式透明度修改
vue中滚动页面,改变样式&&导航栏滚动时,样式透明度修改.vue <div class="commonHeader" v-bind:class=" ...
- iOS Development Sites
iOS Development Sites 学习iOS开发有一段时间了,虽然还处于迷茫期,但相比以前的小白痴状态,现在还是蛮有改观的.期间接触了一些很好的网站和博客,现在摘录下来,就当建个索引,没 ...
- 如何HTML标签和JS中设置CSS3 var变量
一.HTML标签中设置CSS变量 如下: <div style="--color: #cd0000;"> <img src="mm.jpg" ...
- Linux从入门到适应(三):Ubuntu16.04将python从3.5升级到3.6
1 将python从默认的python2.7更换为python3.5 : sudo update-alternatives --install /usr/bin/python python /usr/ ...
- 学习 Qt 编程的好书精品推荐!
最近一段时间,准备开始搞Qt方面的东西,想找几本书看看.网上介绍QT的书籍也有很多,不想浪费时间,所以想找几本精品的书籍来看.花了半天的时间找了几本非常不错的,这里面整理好之后推荐给大家! 下面介绍的 ...