废话不说,直接上题。

slice(),接收两个参数,第一个为开始index(从0开始),第二个为结束的index(也是从0开始,但是不包括index本身,只到index-1)。返回值是截取的数组,原数组不变化。传第三个参数,没有作用。

splice(),接收无数个参数,第一个为开始的index(从0开始),第二个为删除的元素的个数(0代表不删除,1代表删除一个...),第三个为添加的元素,第四个也为添加的元素.....,返回值是删除的元素组成的数组,如果删除了0个就返回空数组,原数组会被改变成被操作后的数组(这里需要注意一个问题,比如:arr =[1,2,3],arr.splice(1,0,4),arr会变成[1,4,2,3],添加的4是在2的前面插入)。

以上两个方法的区别和应用,面试官会问。

forEach方法(除了数组对象之外,forEach 方法可由具有 length 属性且具有已按数字编制索引的属性名的任何对象使用。比如:{0:"a",1:"b",length:2})

对于数组中出现的每个元素,forEach方法都会调用callback函数一次(采用升序索引顺序),但不会为数组中缺少的元素调用回调函数([1,2,"",3],第三个选项不会执行callback)。

arr.forEach(callback,thisArg),只接受两个参数,一个是回调方法,一个是context.callback必选, 最多可以接受三个参数的函数。 对于数组中的每个元素,forEach 都会调用callbackfn 函数一次。thisArg可选, callbackfn 函数中的 this 关键字可引用的对象,如果省略 thisArg,则 undefined将用作 this 值。这时你回答出来这些已经觉得自己还可以了,然后面试官会问你那callback的三个参数是什么?

回调函数的语法如下所示:

function callback(value, index, array1),value:数组元素的值。index:数组元素的数字索引。array1:包含该元素的数组对象。可以在回调方法中改变原数组。

这个方法的作用就是:利用数组中的值做一些应用,比如:显示出来,累加等等。

这里大家可以去区分一下$("div"),jQuery对象的each方法。很像,但是在回调方法调用时,传参不一样,请仔细查看。

链接地址:http://www.cnblogs.com/chaojidan/p/4141413.html

map方法,跟forEach方法差不多,唯一的区别是,arr.map(callback,thisArg),有返回值,返回值是:对每个数组中的元素执行callback后,callback返回的值组成的数组。

当然原数组也不会改变,除非你在callback(value, index, array1)中直接改变array1。

这个方法的作用就是:把数组组装成其他的形式,比如:对数组中的每一项加1,或者平方等等。

这里大家可以去区分下$("div"),jQuery对象的map方法,也很像,但是传参不一样,同时,回调方法调用时,传参也不一样。请仔细查看。

链接地址:http://www.cnblogs.com/chaojidan/p/4141413.html

indexOf方法:接收两个参数:searchElement:必需。 要在 array1 中定位的值。fromIndex:可选。 用于开始搜索的数组索引, 如果省略 fromIndex,则从索引 0 处开始搜索。 如果 fromIndex 大于或等于数组长度,则返回 -1。 如果 fromIndex 为负,则搜索从数组长度加上 fromIndex 的位置处开始。如果计算所得的索引小于 0,则搜索整个数组。数组元素将与 searchElement 值进行全等比较,与 === 运算符类似。

lastIndexOf:接收两个参数:searchElement:必需。 要在 array1 中定位的值。fromIndex:可选。 用于开始搜索的数组索引, 如果省略 fromIndex,则搜索将从数组中的最后一个索引处开始。 如果 fromIndex 大于或等于数组长度,则搜索整个数组。 如果 fromIndex 为负,则搜索从数组长度加上 fromIndex 的位置处开始。 如果计算所得的索引小于 0,则返回 -1。数组元素将与 searchElement 值进行全等比较,与 === 运算符类似。

最后就是一个很重要的方法,面试经常问到的方法:

replace方法:它会跟正则一起出题。它接收两个参数,比如:str.replace(str1,str2);

str1必需。规定子字符串或要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则只会替换一个。比如:"abbc".replace("b","d")  -> 返回"adbc"。

str2必需。规定了替换文本或生成替换文本的函数。

返回值,就是替换之后的字符串。原字符串不改变。

如果需要把匹配到的字符全部替换,需要使用正则"abbc".replace(/b/g,"d")   -> 返回"addc"。

replace() 方法的参数 str2可以是函数。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 str中出现的位置。最后一个参数是 str本身。

比如:"abcd".replace(/(a)(b)(c)/g,function(match,$1,$2,$3,index,str){  match:abc(匹配到的字符串),$1:a(匹配到的第一个子表达式),以此类推,如果没有子表达式,就不会有这些参数,就直接是index。  index:0(匹配到的字符串在原始字符串中的位置,也就是"abc"在"abcd"中的位置),最后一个是str:"abcd"(原始字符串)})

此方法功能很强大,推荐精读,有时可以让面试官眼前一亮。

 insertBefore方法

举个例子:

<ul id="ul"><li>1</li><li>2</li></ul>

var list = document.getElementById("ul");

list.insertBefore(newItem,list.childNodes[0]);第一个参数必选,插入的新节点。第二个参数可选,在其之前插入新节点。如果未规定,则 insertBefore 方法会在list结尾插入 newnode。

加油!

js原生方法传参的细节(面试必问)的更多相关文章

  1. MyBatis dao层 方法传参

    MyBatis dao层 方法传参有三种方法. 1. 以下标的方法获取参数. <update id="insertSuccessKilled">       INSER ...

  2. EasyUI queryParams属性 在请求远程数据同时给action方法传参

    http://www.cnblogs.com/iack/p/3530500.html?utm_source=tuicool EasyUI queryParams属性 在请求远程数据同时给action方 ...

  3. javascript 字符串方法传参

    javascript 字符串方法传参由于嵌套的单引号,双引号过多.有点混乱.. 正确方法如下: '   <td align="left"><input type= ...

  4. 再谈Java方法传参那些事

    把一个变量带进一个方法,该方法执行结束后,它的值有时会改变,有时不会改变.一开始会觉得--“好神奇呀”.当我们了解java内存分析的知识后,一切都是那么简单明了了--“哦,这么回事呀”.但是今天的上机 ...

  5. 对象引用 方法传参 值传递 引用传递 易错点 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  6. java的方法传参,最容易混淆的问题!!!

    参数传递 参数传递,可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了.这种传递方式,我们称为参数传递. 在这里 ...

  7. js 不固定传参

      js 不固定传参 CreationTime--2018年7月2日15点18分 Author:Marydon /** * 声明一个函数 * @explain 传参个数不确定 */ function ...

  8. js 原生方法获取所有兄弟节点

    <!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  9. JS原生上传大文件显示进度条-php上传文件

    JS原生上传大文件显示进度条-php上传文件 在php.ini修改需要的大小: upload_max_filesize = 8M    post_max_size = 10M    memory_li ...

随机推荐

  1. 优先级反转实验,使用信号量实现【RT-Thread学习笔记 5】

    RTOS中很经典的问题.就是在使用共享资源的时候,优先级低的进程在优先级高的进程之前执行的问题.这里模拟这种情况. 下面的实验模拟了优先级反转的情况: 先定义三个线程: //优先级反转实验 rt_se ...

  2. 黄聪:HtmlAgilityPack中SelectSingleNode的XPath和CSS选择器

    XPath和CSS选择器 原文:http://ejohn.org/blog/xpath-css-selectors 最近,我做了很多工作来实现一个同时支持XPath和CSS 3的解析器,令我惊讶的是: ...

  3. C#动手实践:Kinect V2 开发(2):数据源工作原理及红外源Demo

    Kinect体系架构

  4. 学习C++的第三天

    1.sort函数(默认升序排序(从小到大)) 要使用此函数只需用#include <algorithm> sort即可使用,语法描述为:      sort(begin,end),表示一个 ...

  5. pjax技术的应用

    一.什么是PJAX? 现在有一些网站(apicloud,  github)支持这样一种浏览方式,当你点击站内的一个连接的时候,不是传统的跳转到另外一个连接,而是类似ajax的局部刷新改变页面内容,但是 ...

  6. java安全沙箱(一)之ClassLoader双亲委派机制

    java是一种类型安全的语言,它有四类称为安全沙箱机制的安全机制来保证语言的安全性,这四类安全沙箱分别是: 类加载体系 .class文件检验器 内置于Java虚拟机(及语言)的安全特性 安全管理器及J ...

  7. 《C#编程》

    第一天做C#,第一个C#.2016-11-11,周五 1.是用windowFormApp编程的代码. 2.下面是ConsoleApp编程的代码 例题1.主要是声明变量,1>使用变量,赋值语句 2 ...

  8. [手机取证] Apple Watch取证初探

    转载文章请注明出处 1. 关于Apple Watch 苹果公司在2015年3月正式发布了智能手表Apple Watch,包括Apple Watch.Apple Watch Sport以及Apple W ...

  9. 导入 RecyclerView 控件 的过程(Android 6.0)

    由于本人不熟悉Android Studio和java的思维方式,开发android studio的同事告诉我不太推荐使用ListView 而google 建议使用RecycleView ,经过了一顿查 ...

  10. 一起学习KenDo Mobile之一 建立一个简单的移动APP

    开发KenDo Mobile的开发工具只要求支持文本编辑即可,当然我自己用VS2013,大材小用. 移动应用程序开发不同于桌面应用程序开发,前者需要在移动设备上部署,后者使用台式电脑测试和调试应用程序 ...