美文网首页
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