资讯专栏INFORMATION COLUMN

函数小知识点

姘搁『 / 626人阅读

摘要:函数的五种声明方式方法一具名函数函数都会有一个返回值,不写,默认返回。报错的值为的值是的值是方法二具名函数给一个参数区别方法一可在全局访问函数。方法二只能在函数内部访问,在函数外部无法访问。才是函数的真正调用,模拟下的内部。

函数的五种声明方式

方法一:具名函数

function f(parameter){
    return undefined
}

函数都会有一个返回值,不写,默认返回undefined。因为一个函数必须要有一个终止的语句
注意:consol.log()永远返回undefined,它打印什么和返回的没啥关系。

var a = 1,2        //报错
var a = (1,2)    //a 的值为 2
var a = console.log(1);        //a 的值是 undefined
var a = (1, console.log(2))        //a 的值是 undefined

方法二:具名函数给一个参数

var x = function f(parameter){
    return undefined
}

区别:
方法一:可在全局访问函数f

consol.log(f);     // f(parameter){ return undefined }

方法二:只能在函数内部访问f,在函数外部无法访问。

consol.log(f);     // 报错

方法三:匿名函数

var f = function(parameter){};

匿名函数必须给一个变量

方法四:window.Function函数对象

new Funciton("x","y","return x+y")

方法五:箭头函数

f = (x,y) => {return x+y;}

箭头函数是匿名的,只能用变量去存储。
如果只有一句语句,花括号和return可以一起去掉;
如果只有一个变量,可省略圆括号。

函数的name属性

函数有一个属性————name

function f1(){}
f1.name;            //f,字符串

var f2 = function (){};
f2.name;            //f2,字符串

var f3 = function f4(){};
f3.name;            //f4,字符串

new Function("x","y","return x+y");
f3.name;            //anonymous,字符串
函数的本质

函数是一段可以反复调用的代码块。

f(1,2) === f.call(undefined,1,2)

f.call()才是函数的真正调用,模拟下call()的内部。

var f = {};
f.name = "f";
f.params = ["x","y"];
f.functionBody = "console.log("fff")"
f.call = function(){
    return eval(f.functionBody);
};
f.call();        //fff
thisargument
f.call(undefined,1,2);        //undefined就是this,[1,2]就是argument

call的第一个参数可以用this得到
call的第二个参数可以用argument得到

function f(){
    console.log(this);    //this 是参数 1
}
f.call(1);        //Number 对象 1
function f(){
    "use strict";    //严格模式
    console.log(this);        //this 是参数 1
}
f.call(1);        //1,严格模式模式下参数是啥就打印啥
function f(){
    console.log(this);    //this 是参数 undefined,没有就是 undefined
}
f.call();        //window,不是字符串;严格模式下会打印 undefined

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94985.html

相关文章

  • JavaScript 识点

    摘要:比如,构造函数返回的数组都是空位。方法方法方法方法方法方法方法方法对空位的处理则是明确将空位转为。在这些情况下,迭代器关闭。 原型链相关 最详尽的 JS 原型与原型链终极详解 isNaN() 和 Number.isNaN() 的区别 isNaN() 是 ES1 规范; 是全局方法; 如果参数不是一个 Number 类型,会先尝试将参数转化为数值,然后对转换后的结果进行是否是 Na...

    马永翠 评论0 收藏0
  • 程序的一些知识总结

    摘要:小程序很多方法都是异步的原因官方说法天生异步刚接触小程序的时候,发现很多微信提供的都是异步的,如路由跳转,设置和读取缓存,还有获取节点信息等微信的,都是异步的,需要传入回调函数才能获得结果,在我们正常的前端开发中,这些都不是异步的,当时很奇 1. 小程序很多方法都是异步的原因(官方说法:天生异步) 刚接触小程序的时候,发现很多微信提供的api都是异步的,如路由跳转,设置和读取缓存,还有...

    阿罗 评论0 收藏0
  • React中的识点

    摘要:配置默认和中的操作并不能完全满足所有操作需求,有些时候还是需要和打交道。当中提供了属性来帮助我们获取已经挂载元素的节点。当元素在页面上挂载完成以后,就会调用这个函数,并且把这个挂载以后的节点传给这个函数。 配置默认 defaultProps class ExampleComponent extends React.Component{ static defaultProps =...

    niceforbear 评论0 收藏0
  • 程序实践(二):swiper组件实现轮播图效果

    摘要:组件类似于中的,实现类似轮播图的效果,相对于的实现起来更加方便,快捷。swiper组件类似于Android中的ViewPager,实现类似轮播图的效果,相对于Android的Viewpager,swiper实现起来更加方便,快捷。 效果图: 首先看下swiper支持的属性: --------------------------------------------------------...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

姘搁『

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<