美文网首页
2019-05-28 JS(函数、数组、运算符)

2019-05-28 JS(函数、数组、运算符)

作者: 柳叁叁 | 来源:发表于2019-05-28 20:01 被阅读0次

(本文摘录于阮一峰老师所写文章,https://wangdoc.com/javascript/basic/index.html,作个人学习使用。)

函数

1、函数参数如果是原始类型的值(数值、字符串、布尔值),传递方式是传值传递(passes by value)。这意味着,在函数体内修改参数值,不会影响到函数外部。
但是,如果函数参数是复合类型的值(数组、对象、其他函数),传递方式是传址传递(pass by reference)。也就是说,传入函数的原始值的地址,因此在函数内部修改参数,将会影响到原始值。

通过arguments对象的length属性,可以判断函数调用时到底带几个参数。需要注意的是,虽然arguments很像数组,但它是一个对象。数组专有的方法(比如slice和forEach),不能在arguments对象上直接使用。

2、闭包
JavaScript 语言特有的"链式作用域"结构(chain scope),子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。
由于在 JavaScript 语言中,只有函数内部的子函数才能读取内部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。闭包最大的特点,就是它可以“记住”诞生的环境,比如f2记住了它诞生的环境f1,所以从f2可以得到f1的内部变量。在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

闭包的最大用处有两个,一个是可以读取函数内部的变量,另一个就是让这些变量始终保持在内存中,即闭包可以使得它诞生环境一直存在。即闭包使得内部变量记住上一次调用时的运算结果,闭包可以看作是函数内部作用域的一个接口。

闭包的另一个用处,是封装对象的私有属性和私有方法。

注意,外层函数每次运行,都会生成一个新的闭包,而这个闭包又会保留外层函数的内部变量,所以内存消耗很大。因此不能滥用闭包,否则会造成网页的性能问题。

3、(function(){ /* code */ }());
以圆括号开头,引擎就会认为后面跟的是一个表示式,而不是函数定义语句,所以就避免了错误。这就叫做“立即调用的函数表达式”(Immediately-Invoked Function Expression),简称 IIFE。
注意,上面两种写法最后的分号都是必须的。

4、eval的本质是在当前作用域之中,注入代码。由于安全风险和不利于 JavaScript 引擎优化执行速度,所以一般不推荐使用。通常情况下,eval最常见的场合是解析 JSON 数据的字符串,不过正确的做法应该是使用原生的JSON.parse方法。

数组

5、检查某个键名是否存在的运算符in,适用于对象,也适用于数组。

6、当数组的某个位置是空元素,即两个逗号之间没有任何值,我们称该数组存在空位(hole)。数组的空位不影响length属性。
需要注意的是,如果最后一个元素后面有逗号,并不会产生空位。数组的空位是可以读取的,返回undefined。这就是说,空位就是数组没有这个元素,所以不会被遍历到,而undefined则表示数组有这个元素,值是undefined,所以遍历不会跳过。

运算符

7、如果加法运算的运算子是对象,必须先转成原始类型的值,然后再相加。
一般来说,是先调用valueOf方法。对象的valueOf方法总是返回对象自身,这时再自动调用对象的toString方法,将其转为字符串。对象转换的结果是[object Object]。

相关文章

  • 2019-05-28 JS(函数、数组、运算符)

    (本文摘录于阮一峰老师所写文章,https://wangdoc.com/javascript/basic/inde...

  • 前端(运算符)

    与或运算 Unicode编码 相等运算符 条件运算符 js操作属性 js函数

  • js基础语法

    1、js基础语法 2、变量 3、运算符 4、分支结构 5、循环结构 6、函数 7、数据类型 8、数组 9、对象

  • python JS基础语法

    一、js基础语法 二、变量 三、运算符 四、分支结构 五、循环结构 六、函数 七、字符串 八、数组 九、对象 十、...

  • 2021-04-08

    ES6数组的扩展 1,扩展运算符 ...将一个数组转为用逗号分隔的参数序列 该运算符主要用于函数调用 2,替代函数...

  • React-todo-list 系列三

    函数组件 => 组件拆分 TodoList.js TodoItem.js

  • 01-25 js基础属性

    什么是js 一:js基础语法 二:变量 三:运算符 四:分之结构 五:循环 六:函数function 函数名(参数...

  • 手动实现简单的Bus总线

    在emit里面遍历数组 取出函数 执行函数 main.js bus.js 使用

  • HTML-12.day

    1.条件运算符 2.运算符的优先级 4.JS操作属性 7.JS中括号操作style属性 17.数组

  • 【ES6学习之对象函数】

    函数 js函数库:lodash uniq uniqBy 数组处理函数: concat map() 对...

网友评论

      本文标题:2019-05-28 JS(函数、数组、运算符)

      本文链接:https://www.haomeiwen.com/subject/bxpdtctx.html