js问题总结

文章目录

        • 1.vue中this和vm使用
        • 2.v-if判断数组长度length报错
        • 3.普通this和箭头函数this指向
        • 4.数组循环遍历实现方法
        • 5.undefined 和null 以及空值的区别
        • 6.indexOf()

记录开发过程中的困惑和注意点

1.vue中this和vm使用

  • vm指向vue实例,在过滤器中直接使用vm
  • 在函数中调用某个方法,使用this指向

2.v-if判断数组长度length报错

v-if="number.length > 10 " 

当number为null时,上段代码报错,修改如下:

v-if="number != undefined && number.length > 10 " 

3.普通this和箭头函数this指向

普通this,指向调用该函数的对象,调用b()的是c,因此this指向c,输出a+

var factory = function(){
   this.a = 'a';
   this.b = 'b';
   this.c = {
        a:'a+',
        b:function(){
        	return this.a;
        }
    }  
};
console.log(new factory().c.b());  // a+

使用箭头函数,this指向定义时的对象,即a,因此输出a

var factory = function(){
   this.a = 'a';
   this.b = 'b';
   this.c = {
        a:'a+',
        b:()=> {
        	return this.a;
        }
    }  
};
console.log(new factory().c.b());  // a

4.数组循环遍历实现方法

  • for循环,数组较大时,优化效果才比较明显
for(j = 0,len=arr.length; j < len; j++) {
    
}
  • forEach循环,无返回值
let arr = [1,2,3,4];
let result = 0;
arr.forEach(item => {
	item > 2 ? result++ : result;
})
  • map循环,提供一个回调函数,有返回值,可以return
let arr = [1,2,3,4];
let res = arr.map((item,index) => {
	return item * index;
})
console.log(res);
  • for of 循环,需要ES6支持
let arr = [1,2,3,4];
for (let value of arr){
	console.log(value);
}
  • for in 循环
    ···
    let arr = [1,2,3,4];
    for (let index in arr){
    console.log(arr[index]);
    }
    ···
    for of 与for in 区别
    1. for of遍历的是数组的元素值,而for in是数组的索引值
    2.for of只支持数组遍历,而for in 支持对象

  • find,查找数组中匹配的第一个元素

let arr = [1, 2, 3, 4, 5, 6]
let newArr = arr.find(val => {
	return val > 2
})
console.log(newArr) // 3

5.undefined 和null 以及空值的区别

undefined:声明了变量但未初始化,”缺少值“ = 此处应该有值,但现在没有

null:表示一个对象的值,“不存在的对象” = 此处不应该有值

' ':空字符串,长度为0

// 声明但未初始化
let number;
console.log(number === undefined)   // true
 
// 不存在的对象
var d =  document.getElementById('notExistElement');
console.log(d === null);            // true
 
console.log(undefined == null);    // true
console.log(undefined === null);   // false
 
console.log(Number(null));         // 0
console.log(Number(undefined));   // NaN
 
// 一个对象的值
var a = null;
console.log(typeof a);           // object
 
// 空的字符串
var b = '';
console.log(typeof b);          // string 

6.indexOf()

indexOf() :返回某个指定的字符串值在字符串中首次出现的位置。

  • indexOf() 方法对大小写敏感!
  • 如果要检索的字符串值没有出现,则该方法返回 -1。
let str="helloworld";
let result1 = str.indexOf('aa');
let result2 = str.indexOf('wor');
console.log(result1);  // -1 
console.log(result2);  // 5

你可能感兴趣的:(前端总结,js,javascript)