首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript函数 ④ ( 函数返回值 | 函数返回值语法 return 关键字 | 函数默认返回undefined )

一、JavaScript 函数返回值 1、函数返回值引入 JavaScript 函数 可以 实现某种特定的功能 , 执行完毕后 , 可以返回一个 " 返回值 " ; 当 函数 被调用执行任务完毕时 ,..." 返回值 " 会被返回给调用者 ; 如果 函数 中没有明确 使用 return 关键字 返回 " 返回值 " , 那么函数会默认返回undefined 值 ; 2、函数返回值语法 在 JavaScript...: function functionName(parameters) { // 函数体 return expression; // 返回值 } 在 JavaScript 中的返回值类型..., 返回给 调用者的 默认返回值是 undefined 未定义值 , 使用 变量 ret 接收默认返回值 , 将其打印出来 就是 undefined 值 ; 代码示例 : 执行结果 : 打印出来的 函数返回值 是 undefined 未定义值 ; 4、函数默认返回值 在下面的代码中 , add 函数 中 使用 return 关键字 返回返回

9910

前端面试 【JavaScript】— 函数的arguments为什么不是数组?如何转化成数组

因为arguments本身并不能调用数组方法,它是一个另外一种对象类型,只不过属性从0开始排,依次为0,1,2...最后还有 callee 和length属性,我们也把这样的对象称为类数组。...那这导致很多数组的方法就不能用了,必要时需要我们将它们转换成数组,有哪些方法呢?...Array.prototype.slice.call() function sum(a, b) { // 将类数组转换为数组 let args = Array.prototype.slice.call...}) console.log(num); }; sum(1,2,3,4,5,6); // 21 Array.from() function sum(a, b) { // 将类数组转换为数组...ES6展开运算符 function sum(a, b) { // 将类数组转换为数组 let args= [...arguments]; // 对转换为数组的方法调用累加

1.6K40
您找到你想要的搜索结果了吗?
是的
没有找到

一文读懂《Effective Java》第43条:返回零长度的数组或集合,不是null

对于一个返回null 不是零长度数组或者集合的方法,客户端几乎每次用到该方法都可能会忘记写专门处理null 返回值的代码,进而导致NPE。...返回值为null 与性能 有时候会有程序员认为:null 返回值比零长度数组更好,因为它避免了分配数组所需要的开销,但这种观点站不住脚。...在返回值这种级别上担心性能问题是不明智的,除非分析表明这个方法是造成性能问题的真正源头 对于不返回任何元素的调用,每次返回同一个零长度数组是有可能的,因为零长度数组不可变的,不可变对象可能被自由的共享...,没理由返回null,二是返回一个零长度的数组或者集合。...Java 的返回值为null 的做法,很可能是从C 语言沿袭过来的,在C 中,数组长度是与实际的数组分开返回的,如果返回数组长度为0,再分配一个数组就没有任何好处了。

1.6K20

JavaScript函数 ⑤ ( return 关键字终止函数 | return 关键字返回一个值 | return 关键字返回多个值 - 返回数组对象 )

一、JavaScript 函数返回值 1、return 关键字终止函数 return 关键字 除了 返回 函数返回值 功能之外 , 还具有 终止 函数执行 的作用 , return 关键字后面的语句... 执行结果 : 只返回了最后一个值 ; 3、return 关键字返回多个值 - 返回数组对象 如果需要返回多个值 , 可以 使用 return 关键字 返回一个数组...; JavaScript 中的数组 相当于 Java 中的 ArrayList , 可以动态改变元素个数 ; 代码示例 : 在下面的代码中 , add 函数返回一个数组 [num1, num2, num1...+ num2] , 此时数组对象被当做一个返回值对待 , 因此 可以使用 return 关键字返回 ; 执行结果 : 返回了 一个数组 , 数组中有 3 个值 ;

8410

ES6-标准入门·语法的扩展

如果将一个匿名函数赋值给一个变量,ES5 的 name 属性会返回空字符串, ES6 的 name 属性会返回实际的函数名。...函数体内的 this 对象就是定义时所在的对象,不是使用时所在的对象。 不可以当作构造函数。也就是说,不可以使用 new 命令,否则会抛出一个错误。...蹦床函数(trampoline)可以将递归执行转为循环执行,它接受函数作为参数,只要函数执行后返回函数,就继续执行。 然后将原来的递归函数改写为每一步返回另一个函数。...然后,每一轮递归 sum 返回的都是 undefined,所以就避免了递归执行; accumulated 数组存放每一轮 sum 执行的参数,总是有值的,这就保证了 accumulator 函数内部的...空位不是 undefined,一个位置的值等于 undefined 依然是有值的。空位是没有任何值的,in 运算符可以说明这一点。

1K40

你所不知道的JSON

首先简单回顾一下JSON和JavaScript不是所有的合法的JSON都是有效的JavaScript; JSON只是一个文本格式; JSON中的数字是十进制。 1....foo中属性b的值是函数定义,没有被转换丢失。 还有哪些属性也不能转换? 1. 循环引用 如果一个对象的属性值通过某种间接的方式指回该对象本身,那么就是一个循环引用。...(foo); console.log(fooStringified); // {"b":{"a":{}}} c的属性指向foo对象,foo对象中的b属性又指向bar对象而无法处理,整个被忽略返回空对象...假想如果服务器只想要ade的全称,不是分别获取姓和名,我们可以直接定义toJSON来达到目的: Person.prototype.toJSON = function () { return {...函数 过滤函数以对象中的每一个属性和值作为输入,返回值有以下几种情况: 返回undefined表示忽略该属性; 返回字符串,布尔值或则数字将会被stringify; 返回对象将会触发递归调用知道遇到基本类型的属性

1K20

「面试基础小册」数据类型及其延伸

undefined 代表的含义是未定义, null 代表的含义是空对象(但又不是对象)。...这里使用了 typeof 函数去判断类型,那么在 javascript 如何准确的判断一个变量的类型呢?...,发现这里的 toString() 不是调用 Object.prototype.toString(),数组内部对这个方法进行重写了。...但是它也存在着以下几个问题: 他无法实现对函数 、RegExp 等特殊对象的克隆 会抛弃对象的 constructor, 所有的构造函数会指向 Object 对象有循环引用, 会报错 • 递归实现...null 和 undefined 是相等的 4、要比较相等性之前,不能将 null 和 undefined 转换成其他任何值 5、如果有一个操作数是 NaN,则相等操作符返回 false ,不相等操作符返回

64320

javascript语言精粹(蝴蝶书)-笔记

javascript函数是基于词法作用域(lexical scoping)的顶级对象,是第一个成为主流的lamda语言。一个糟糕的选择:javascript依赖于全局变量来进行连接。...除了声明时定义的形参,每个函数接收两个附加的参数:this和arguments,arguments.callee(ES5严格模式报错)代表函数自身,通常用于递归。...当return被执行(不管ture or false),函数立即返回不再执行余下代码。 一个函数总会返回一个值,没有指定返回值,则返回undefined。...如果函数以new方式调用,且返回不是一个对象,则返回this(该新对象)。 补充:continue中断本次循环,继续下一次循环。break 语句用于跳出循环。...即使quo已经返回了,但get_status方法仍然享有访问quo对象的的status属性的特权。get_status方法并不是访问该参数的一个拷贝,它访问的就是该参数本身。

1.8K30

前端工程师自检清单73答

JavaScript 对象的底层数据结构是什么? 对象数据被存储于堆中 (如对象、数组函数等,它们是通过拷贝和new出来的)。...至少可以说出三种判断 JavaScript 数据类型的方式,以及他们的优缺点,如何准确的判断数组类型 typeof —— 返回给定变量的数据类型,可能返回如下字符串: 'undefined'——Undefined...true,不是返回 false。...理解原型设计模式以及 JavaScript 中的原型规则 A. 所有的引用类型(数组、对象、函数),都具有对象特性,即可自由扩展属性; B....理解堆栈溢出和内存泄漏的原理,如何防止 堆栈溢出 的产生是由于过多的函数调用,导致调用堆栈无法容纳这些调用的返回地址,一般在递归中产生。

1.8K21

ECMAScript 6 笔记(三)

上面代码使用了对象的解构赋值默认值,没有使用函数参数的默认值。...调用函数f时,参数形成一个单独的作用域。在这个作用域里面,默认值变量x指向第一个参数x,不是全局变量x,所以输出是2。   再看下面的例子。...(3)函数返回值   JavaScript函数只能返回一个值,如果需要返回多个值,只能返回数组或对象。扩展运算符提供了解决这个问题的一种变通方法。...(1)函数体内的this对象,就是定义时所在的对象,不是使用时所在的对象。 (2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。...function f(x){ g(x); return undefined; }   尾调用不一定出现在函数尾部,只要是最后一步操作即可。 尾递归   函数调用自身,称为递归

34220

每天10个前端小知识 【Day 6】

//三元表达式:如果不写end参数则为undefined说明第一次调用所以结束索引为arr.length-1 //如果是递归调用则使用传进来的参数end值 var end=...Js中数组是如何在内存中存储的? 数组不是以一组连续的区域存储在内存中,而是一种哈希映射的形式。它可以通过多种数据结构来实现,其中一种是链表。 4....in 获取的是对象的键名; for… in 会遍历对象的整个原型链,性能非常差不推荐使用, for … of 只遍历当前对象不会遍历原型链; 对于数组的遍历,for…in 会返回数组中所有可枚举的属性...不同的对象类型调用toString方法时,根据原型链的知识,调用的是对应的重写之后的toString方法(function类型返回内容为函数体的字符串,Array类型返回元素组成的字符串…),不会去调用...9. isNaN 和 Number.isNaN 函数有什么区别? NaN:全局属性 NaN 的值表示不是一个数字(Not-A-Number)。

7610

力扣 (LeetCode)-合并两个有序链表,删除排序数组中的重复项,JavaScript笔记

,将两个链表头部较小的一个与剩下的元素合并,并返回排好序的链表头,当两条链表中的一条为空时终止递归。...笔记 变量 JavaScript的类型有数字,字符串,布尔值,函数和对象,还有undefined和null,数组,日期,正则表达式。...在JavaScript中,使用关键字var,不必指定变量类型,所以,JavaScript不是强类型语言。...原型方法只能声明公共函数和属性,类定义可以声明只在类的内部访问的私有函数和属性。 ECMAScript是一种脚本语言规范,JavaScript是这个规范的一个实现。...// 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。

1.7K10

javascript语言精粹 读书笔记

这些名字被当做字面量名不是变量名来对待,所以对象的属性名在编译时才能知道。属性的值就是表达式。...P20 简单类型: 数字,字符串,布尔值,null值和undefined值 对象类型:数组函数,正则表达式,对象。 对象是可变的键控集合,对象是属性的容器,每个属性都拥有名字和值。...P31 当函数被调用时,会得到一个免费奉送的参数,arguments数组。 arguments并不是一个真正的数组。它只是一个类似数组(array-like)的对象。...一个函数总是会返回一个值。如果没有指定返回值,则返回undefined。 如果函数以在前面加上new前缀的方式来调用,且返回不是一个对象,则返回this(该新对象)。...P43 级联 没有返回值的方法会返回undefined, 如果我们让方法返回this不是undefined,就可以启用级联。

60010

函数的扩展

arguments对象不是数组,而是一个类似数组的对象。所以为了使用数组的方法,必须使用Array.prototype.slice.call先将其转为数组。...如果将一个匿名函数赋值给一个变量,ES5 的name属性,会返回空字符串, ES6 的name属性会返回实际的函数名。...箭头函数可以让setTimeout里面的this,绑定定义时所在的作用域,不是指向运行时所在的作用域。下面是另一个例子。...只要f执行后返回一个函数,就继续执行。注意,这里是返回一个函数,然后执行该函数不是函数里面调用函数,这样就避免了递归执行,从而就消除了调用栈过大的问题。...然后,每一轮递归sum返回的都是undefined,所以就避免了递归执行;accumulated数组存放每一轮sum执行的参数,总是有值的,这就保证了accumulator函数内部的while循环总是会执行

70210

前端高频面试题(三)(附答案)

1.如果obj里面有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式,不是对象的形式2.如果obj里有RegExp(正则表达式的缩写)、Error对象,则序列化的结果将只得到空对象...常见的类数组对象有 arguments 和 DOM 方法的返回结果,函数参数也可以被看作是类数组对象,因为它含有 length属性值,代表可接收的参数个数。...,因此它会被then捕获不是catch。原型链指向p.__proto__ // Person.prototypePerson.prototype....迭代查询与递归查询实际上,DNS解析是一个包含迭代查询和递归查询的过程。递归查询指的是查询请求发出后,域名服务器代为向下一级域名服务器发出请求,最后向用户返回查询的最终结果。...例如 Infinity、NaN、undefined、null 字面量(2)函数属性,全局函数可以直接调用,不需要在调用时指定所属对象,执行结束后会将结果直接返回给调用者。

42120

37个JavaScript基本面试问题和解答(建议收藏)

这种行为也被认为是遵循了在JavaScript中将一行开头大括号放在行尾的约定,不是在新行的开头。如此处所示,这不仅仅是JavaScript中的一种风格偏好。 7、什么是NaN?它的类型是什么?...reverse()方法返回数组本身的引用(即,在这种情况下为arr1)。因此,arr2仅仅是对arr1的引用(不是副本)。...16、如果数组列表太大,以下递归代码将导致堆栈溢出。你如何解决这个问题,仍然保留递归模式?...setTimeout( nextListItem, 0); }}; 堆栈溢出被消除,因为事件循环处理递归不是调用堆栈。...注意:JavaScript区分大小写,我们在这里使用NULL不是null。 36、代码返回后会怎么样?

2.9K10

JavaScript 函数

content {:toc} 本文为慕课网 JavaScript深入浅出 JavaScript 函数笔记。 概念 函数是一块JavaScript代码,被定义一次,但可执行和调用多次。...callee 属性是 arguments 对象的一个成员,它表示对函数对象本身的引用,这有利于匿名函数递归或者保证函数的封装性,例如下边示例的递归计算1到n的自然数之和。...call 为扁平化传参,apply 后面的参数为数组 传入 null/undefined 时,实际为 Window 对象 在严格模式下:上述代码最后两行分别输出 null, undefined bind...在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。...函数 foo 的返回不是对象,所以会直接忽视这个 return 方法。而是变为 return this;。

49410
领券