关于面试:
*基层工程师 --基础知识
*高级工程师 --项目经验
*架构师 --解决方案
扎实的基础会让你高效学习新技术!
1.拿到一个面试题,你第一时间看到的是什么?
考点
2.如何看待网上搜出来的永远也看不完的题海?
学好基础以不变应万变
3.如何看待遇到的面试题
题目—知识—题目
题目:
题目考察的知识点为例:
1.js中使用typeof能得到哪些类型
考点:js变量类型
string、number、boolean、object、function、undefined
引用类型只能区分function
2.何时使用===何时使用==
“===”完成没有类型转换
“==”类型转换
if(obj.a == null){
//这里相当于obj.a===null || obj.a ===undefined 简写形式
//这是jquery源码中推荐的写法
}
除此之外,全部用===
3.js中有哪些内置函数--数据封装类对象
--内置函数有什么作用:原型、原型链特别强调内置函数的作用;
--不考虑运行环境,js当做一个单纯的语言来讲,内置了一些东西。
--内置对象:Math JSON
Object
Array
Boolean
Number
String
Fouction
Date
RegExp
Error
4.js变量按照存储方式区分为哪些类型,并描述其特点
一、变量类型:
1.值类型---把数分块存在内存中
2.引用类型--好几个变量共用一个内存块,节省内存空间。
二、特点区别:
*1.值类型的值赋值之后不会相互干涉
*2.引用类型赋值是一个变量指针的赋值,并不是真正的值的copy,
它们的值的修改会相互干预的。
//值类型
var a =10;
var b= a;
a =11;
console.log(b);//10
//引用类型
var obj1 = {x:100};
var obj2 = obj1;
obj1.x = 200;
console.log(obj2.x);//200
5.如何理解JSON
1.json只不过是一个js内置对象(和Math一样)
2.json也是一种数据格式。
JSON的API:
json.stringify({a:10,b:20}); //把对象变成字符串
json.parse('{"a":10,"b":20}'); //把字符串变成对象
知识点:
1.变量类型
--值类型 vs 引用类型
值类型:
eg:
var a = 100;
var b = a;
a=200; //a的修改不会影响b
console.log(b);//100
每一个变量都能存储个字的值不会相互影响。
从内存中来说**值类型**是把每一个值都存储到变量内存的位置;
引用类型:b的修改影响了a
eg:
var a = {age:20};
var b=a;
b.age = 21;
console.log(a.age); //21
把a赋值成一个对象,存在另一个地方,a内存的位置是通过指针指向这个对象的地方,把b赋值成a的时候,定义了一个b,b的指针又指向这个对象的位置,a和b同时指向这个对象的位置,a和b同时指向这个对象,当b.age赋值21的时候,a也指向这个对象,所以a的值变了;
引用类型的变量是一个真实的对象的一个指针而已,并不是每次赋值把这个对象真正的值copy一份存储一份。
引用类型:对象,数组,函数
可以无限制扩展属性(为了让内存可以共用空间,才会出现引用这种方式)
--typeof运算符详解
typeof只能区分值类型的强制类型,引用类型区分不出来(除了function)
值类型:
typeof undefined //undefined
typeof 'abc' //string
typeof 123 //number
type of true //boolean
引用类型:
typeof {} //object
typeof [] //object
typeof null //object
--什么都没有只是一个空的指针而已,定义了一个位置,但是并没有指向任何一个引用类型的一个真实的对象
typeof console.log //function
2.变量计算--强制类型转换(值类型的类型转换计算)
1.字符串拼接
var a = 100 +10; //110
var b = 100 +'10'; // '10010'
----字符串拼接的时候发生了类型转换;
2.==运算符
100 == '100'; // true
0 == ' '; //true
--慎用==,特别针对第一二种情况,他会进行类型转换,试图让前后的数相同。
null == undefined; //true
--0 和 ' '和null和undefined 都会转换成false。
这些地方的==全部换成===就不会出现这种情况。
3.if语句
4.逻辑运算符(或与非)
console.log(10&&0); //0 把10转换成true了;
console.log(' ' || 'abc'); //' ' 转换成false
console.log(!window.abc); // true
!undefiend---->true
//判断一个变量会被当做true还是false
var a =100;
console.log(!!a); //true
!a ---->false
!!a ---->true