美文网首页
day day up

day day up

作者: 十二丶_1645 | 来源:发表于2018-02-05 16:31 被阅读0次

    1、null和undefined的区别

    null表示一个空的值,和0以及空字符串' '不同,0是一个数值,‘ ’表示长度为0的字符串,而null表示空。

    undefined表示未定义。大多数情况下应该用null。undefined仅仅在判断函数参数是否传递 的情况下有用。

    2、js是动态语言,可以对变量进行任意赋值。也可以自由的给对象添加或删除熟悉。

    var i=2;

    i='123'

    静态语言比如java不行。

    3、strict模式

    es5中强制使用var声明变量,如果浏览器支持strict模式,变量未进行声明,会报referenceError错误。

    而在es6中,使用let声明局部变量,var声明全局变量,const声明常量

    4、字符串

    es6新增字符串拼接:

    var name='xhh';

    var age=20;

    var message='你好,${name}今年${age}岁了

    常见操作:

    string.length;

    字符串是不可改变的,使用string[i]改变字符串时,不会报错但也不会又任何改变。

    string.toUpperCase()

    string.toLowerCase()

    string.indexOf(str) 搜索指定字符串出现的位置,未找到返回‘-1’

    string.substring(x,y)返回指定索引区间的子串

    5、数组

    对array.length进行赋值会改变数组的大小

    对array[i]赋值时,如果i>array.length也会改变array的大小

    array.indexOf()

    array.slice(x,y)返回x位置开始的y个元素

    array.push(),array.pop()入栈出栈

    array.unshift()往头部添加

    array.shift()把头部第一个元素删除

    array.sort()排序

    array.reverse()反转

    array.splice()指定的索引开始删除若干元素,然后再从该位置添加若干元素

    array.concat()拼接,返回新的数组

    array.join()用'-'将每个元素连接起来,然后返回连接后的字符串

    6、if ...else...

    如果语句块只包含一条语句,那么可以省略{}。省略{}的危险之处在于,如果后来想添加一些语句,却忘了写{},就改变了if...else...的语义

    7、Map和Set

    8、for ... of 遍历Map,Set,Array

    修复了for ...in 的问题

    var a = ['A','B','C'];

    a.name ='Hello';

    for(var x in a) {

    console.log(x);// '0', '1', '2', 'name'

    }

    9、获取所有参数,使用...rest

    let sum=function(...rest) {

      let n=0;

      for(let i=1;i<rest.length;i++){

    n+=rest[i]

    }

    return n

    }

    sum(1,2,3,4)

    10、array.map()和array.forEach()区别

    使用forEach来修改原数组,使用map来返回一个新的数组

    array.forEach((number,index) => {

    return array[index]=num*2;

    })

    forEach适合于你并不打算改变数据的时候,而只是想用数据做一些事情 – 比如存入数据库或则打印出来。

    let doubled=array.map( num=>{

    return num*2

    })

    map()适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)来玩出更多的花样。

    11、变量提升

    javaScript的函数定义有个特点,它会先扫描整个函数体的语句,把所有申明的变量“提升”到函数顶部.

    严格遵守“在函数内部首先申明所有变量”

    12、var that=this;

    a={

    name:'xhh',

    birth:1995,

    age:function(){

    var that=this;

    function getAge(){

    return new Date().getFullYear()-that.birth;

    }

    return getAge();

    }

    a.age();

    13、apply和call

    指定this指向哪个对象,可以用函数本身的apply方法,apply接收两个参数,一个是需要绑定的this变量,一个参数是array,表示函数本身的参数。

    call与apply类似,apply把参数打包成array,call按顺序传入

    Math.max.apply(null,[1,2,3])

    Math.max.call(null,1,2,3)

    改变内置函数指向

    var count=0;

    var oldParseInt=parseInt;

    window.parseInt=function(){

    count+=1;

    return oldParseInt.apply(null,arguments)

    }

    14、array.reduce

    let a=[1,2,3,4]

    a.reduce(function(x,y){

    return x+y;

    }

    Array的reduce()把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算

    15、重写parseInt

    function stringToInt(s){

    let strArray=s.split('');

    let intArray=strArray.map((x) => {

    return +x;

    })

    return intArray.reduce( (x,y)  =>  {

    return x*10+y;

    })

    }

    16、大小写规范

    function normalize(arr){

    function change(item){

    let newItem=item[0].toUpperCase+item.substring(1).toLowerCase();

    return newItem;

    }

    arr.map(change);

    }

    17、array.map(parseInt)问题

    正确写法array.map(function(x){

    return parseInt(x);

    }

    因为parseInt接收三个参数currentValue,index,array

    相关文章

      网友评论

          本文标题:day day up

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