javascript函数部分知识点

知识点:

  1. 函数声明的三种方式;
  2. 函数的重复声明;
  3. 函数作为第一等公民;
  4. 函数名的提升
    5.不能在条件语句中声明函数
  5. 函数name+length属性以及toString(0方法
  6. 函数作用域
  7. 函数本身的作用域
  8. 参数的省略
  9. 同名参数
  10. arguments对象
  11. 函数闭包
  12. 立即调用的函数表达式(iife)
  13. eval命令
  14. 间接调用和直接调用

答案:

  1. function命令
function print(s){
  console.log(s);
}

函数表达式

 var print = function(s){
  console.log(s);
};

function构造函数

var add = new Funciton(){
  'x',
  'y',
  'return(x+y)';
}
//你可以传递任意参数给function构造函数,只有最后一个参数
//会被当做函数体,如果只有一个参数,该参数就是函数体.
  1. 后面声明的会覆盖前面声明的.
  2. 函数与其他值地位相同.凡是可以使用值的地方,就能使用函数.可以把函数作为参数传递,作为返回值返回


    输出结果:2
  3. javascript引擎将函数名视为同变量名,所以采用function命令声明函数时,整个函数会像变量声明一样被提升到代码头部.
  4. 在条件语句中声明的函数,可能无效,意思就是相当于声明了这个函数,在任何地方都可以使用


    返回结果:你好啊,我还是可以输出
  5. 函数name属性返回函数的名字,匿名函数返回空字符串,返回的内容是function与括号之间的部分;
    length属性返回的是函数定义时的参数个数;
    toString()方法返回的是函数声明,连同函数的注释部分都会返回
  6. 作用域(scope)指的是变量存在的范围,javascript只有两种作用域;一种是全局作用域,变量在整个程序中一直存在,所有地方都可以读取,另一种是函数作用域,变量只在函数内部存在.
    在函数外部声明的变量就是全局变量(global variable),它可以在函数内部读取
    注意:局部变量只能在函数内部声明,在其他区块中声明,一律都是全局变量.
  7. 函数本身也是一个值,也有自己的作用域,他的作用域与变量一样,就是其声明时所在的作用域,与其运行时所在的作用域无关.


    运行结果在图中第二行
  8. 函数的参数是可以省略的,省略不会报错
  9. 同名参数,取最后一个参数作为传入值
  10. 由于javascript允许函数有不定数目的参数,所以我们需要一种机制,可以在函数体内部读取所有参数,这就是arguments对象的由来
    arguments对象,包括了运行时所有传进来的参数
    arguments与数组很像,但是他是一个对象,不是数组,数组专有方法(slice和forEach等)不能在arguments对象上直接使用.
    arguments对象带有一个callee属性,返回他所对应的原函数.这个属性在严格模式下是禁用的,因此不建议使用


    运行结果在第三行
  11. 闭包(colsure) 子函数读取函数内部的变量,可以简单理解成"定义在一个函数内部的函数",闭包最大的特点就是可以记住"诞生的环境".在本质上,闭包就是将函数内部和函数外部链接起来的一座桥梁.
    闭包最大用处的两个,一个是可以读取函数内部的变量,另一就是让这些变量保存在内存中.
  12. javascript引擎规定,如果function关键字出现在行首,一律解释成语句,如果要函数立即执行,解决方法就是不要让funciton还出现在行首,通过圆括号开头解决,这样引擎就认为后面跟的是一个表达式,而不是函数定义语句,所以就避免了错误,立即调用函数表达式(immediately-invoked function expression),简称IIFE;
  13. eval命令的作用是,将字符串当做语句执行,由于eval没有自己的作用域,都在当前作用域内执行,因此可能会修改当前作用域的变量的值,造成安全问题,使用strict模式的话,eval内部声明的变量,不会影响到外部作用域,但是在此,模式下eval依然可以读写当前作用域的变量
    运行速度较慢.
  14. 直接调用的作用域总是当前作用域,间接调用的作用域总是全局作用域
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,281评论 0 4
  • 继承 一、混入式继承 二、原型继承 利用原型中的成员可以被和其相关的对象共享这一特性,可以实现继承,这种实现继承的...
    magic_pill阅读 1,097评论 0 3
  • 来源:仗剑走天涯! 关于javascript的作用域的一些总结,主要参考以上文章,加上自己的整理的理解。 近日对j...
    Michael_林阅读 982评论 0 1
  • 和所有的傻瓜女孩一样,婉莹也喜欢英俊潇洒,风流倜傥的男孩。在那个做梦的年龄幻想着自己的白马王子怎样浪漫的偶遇,曾经...
    沐源工作室阅读 354评论 1 3
  • 一、【好习惯践行】 青蛙打卡:7天 运 动: 指定阅读:1 周检 视:7次 周会语音分享:0次 周会文字作业:1次...
    慧de岸阅读 100评论 0 0