js高频经典面试题总结
类型转换问题
console.log(null>=0);
console.log(null<=0);
console.log(null==0);
console.log(undefined == 0);
console.log([] == ![]);
console.log(0 == "0");
console.log(1 == "true");
console.log(false == "false");
console.log(false == "0");
console.log(false == undefined);
console.log(false == null);
console.log(null == undefined);
console.log(" \t\n " == 0);
console.log({} == !{});
console.log([] == false);
console.log(![] == false);
console.log([] !==false);
var a = 0;
for(var i = 0;i<5;i++){
if(''){
a+=i;
}else if(Number(undefined)){
a = 2+i;
}else if(Number(null)){
a = 3+i;
}else if(Number({})){
a = 4+i;
}else if(Number([])){
a = 5+i;
}else{
a++;
}
}
console.log(a);
数值的理解
console.log(0.1+0.2 == 0.3);
console.log(0.3-0.2 == 0.2-0.1);
数据类型
function getAge(...args) {
console.log(typeof args);
}
getAge(21);
对象理解
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
let a = 3;
let b = new Number(3);
let c = 3;
console.log(a == b);
console.log(a === b);
console.log(b === c);
console.log(a == c);
function makeCounter() {
var count = 0
return function() {
return count++
};
}
var counter = makeCounter()
var counter2 = makeCounter();
// console.log(counter == counter2);
console.log( counter() )
console.log( counter() )
console.log( counter2() )
console.log( counter2() )
var fnArr = [];
for (var i = 0; i < 10; i ++) {
fnArr[i] = function(){
return i
};
}
console.log( fnArr[3]() )
var obj1 = {a:1, b:2};
var obj2 = {a:1, b:2};
console.log(obj1 == obj2);
console.log(obj1 = obj2);
console.log(obj1 == obj2);
var fullname = 'David Jones';
var obj ={
fullname: 'Colin Brown',
prop:{
fullname:'Aurelio Deftch',
getFullname: function(){
return this.fullname;
}
}
}
var test = obj.prop.getFullname;
console.log(test())
console.log( obj.prop.getFullname());
function checkAge(data) {
if (data === { age: 18 }) {
console.log("You are an adult!");
} else if (data == { age: 18 }) {
console.log("You are still an adult.");
} else {
console.log(`Hmm.. You don't have an age I guess`);
}
}
checkAge({ age: 18 });
function test(){
var n=4399;
function add(){
n++;
console.log(n);
}
return {n:n,add:add}
}
var result=test();
var result2=test();
console.log(result == result2);
result.add();
result.add();
console.log(result.n);
result2.add();
this的指向
const shape = {
radius: 10,
diameter() {
return this.radius * 2;
},
perimeter: () => 2 * Math.PI * this.radius
};
shape.diameter();
shape.perimeter();
同步异步
for(var i = 0;i<5;i++){
setTimeout(function () {
console.log(i);
},1000);
}
作用域
var funcs = [];
for(var i = 0;i<10;i++){
funcs.push(()=>{
return i;
});
}
funcs.forEach((func) =>{
console.log(func());
}); var funcs2 = [];
for(var i = 0;i<10;i++){
funcs2.push(()=>{
return i;
});
console.log(funcs2[i]());
}
funcs2.forEach((func) =>{
console.log(func());
});
var i = 10;
function f() {
i = 20;
console.log(i);
for(var i = 0;i<6;i++){
console.log(i);
}
console.log(this.i);
console.log(i);
}
f();
console.log(i);
fn1();
fn2();
function fn1(){
console.log("fn1");
}
var fn2 = function(){
console.log("fn2");
}
fn2();
function Foo(){
getName = function(){
alert(1);
};
return this;
}
Foo.getName = function(){
alert(2);
};
Foo.prototype.getName = function(){
alert(3);
};
var getName = function(){
alert(4);
};
function getName(){
alert(5);
}
//请写出以下答案
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
var fn = function(){
console.log(fn);
}
fn();
var obj = {
fn2:function () {
console.log(fn2);
}
};
obj.fn2();
变量声明
console.log(a);
var a=1;
console.log(a);
function a(){alert(2)}
console.log(a);
var a=3;
console.log(a);
function a(){alert(3)}
console.log(a);
console.log(a());
运算符相关
var a = 2,b = 3; var c = a+++b;
console.log(c);
console.log(a+++b);
console.log(a+++b);
object和function的关系,理解原型
console.log(Object instanceof Function);
console.log(Object instanceof Object);
console.log(Function instanceof Function);
console.log(Function instanceof Object);
console.log(Object.constructor);
console.log(Function.constructor);
console.log(Function.prototype);
console.log(Function.__proto__);
console.log(Function.__proto__ === Function.prototype );//
console.log(Function.__proto__ === Object.prototype );//, console.log(Object.prototype);
console.log(Object == Function);
console.log(Object == Function);
var foo = {n:3};
(function (foo) {
console.log(foo.n);
foo.n = 3;
var foo = {n:2};
console.log(foo.n);
})(foo);
console.log(foo.n);
var obj = {"key":"1","value":"2"};
var newobj = obj;
newobj.value+=obj.key;
console.log(obj.value);
if(!"a" in window){
var a = 1;
}
console.log(a);
var one;
var two = null;
console.log(one == two,one === two);
var arr = [{a:0},{},[]];
arr.forEach((items, index) => {
items.b = index;
});
console.log(arr);
function foo() {
console.log("first");
setTimeout(()=>{
console.log("second");
},5);
}
for(let i = 0;i<100;i++){
foo();
}
未完,持续更新.........
js高频经典面试题总结的更多相关文章
- 170106、用9种办法解决 JS 闭包经典面试题之 for 循环取 i
闭包 1.正确的说,应该是指一个闭包域,每当声明了一个函数,它就产生了一个闭包域(可以解释为每个函数都有自己的函数栈),每个闭包域(Function 对象)都有一个 function scope(不是 ...
- 用9种办法解决 JS 闭包经典面试题之 for 循环取 i
2017-01-06 Tomson JavaScript 转自 https://segmentfault.com/a/1190000003818163 闭包 1.正确的说,应该是指一个闭包域,每当声明 ...
- Java高频经典面试题(第一季)五:递归与迭代
编程题: 有n步台阶, 一次只能上 1步 或 2步, 共有多少种走法? 递归 循环迭代 递归: package will01; import org.junit.Test; public class ...
- Java高频经典面试题(第一季)四:方法的参数传递机制
考点? 方法的参数传递机制 String,包装类等对象的不可变性 方法的参数传递机制: ①形参是基本数据类型 传递数据值 ②实参是引用数据类型 传递地址值 特殊的类型:String.包装类等对象不可变 ...
- Java高频经典面试题(第一季)一:自增的分析
package will01; public class testZiZeng { public static void main(String[] args) { int i = 1; i = i ...
- 李洪强iOS经典面试题147-WebView与JS交互
李洪强iOS经典面试题147-WebView与JS交互 WebView与JS交互 iOS中调用HTML 1. 加载网页 NSURL *url = [[NSBundle mainBundle] UR ...
- 李洪强iOS经典面试题153- 补充
李洪强iOS经典面试题153- 补充 补充 有空就来解决几个问题,已经懒癌晚期没救了... UML 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模 ...
- 李洪强iOS经典面试题140-UI
李洪强iOS经典面试题140-UI UI viewcontroller的一些方法的说明viewDidLoad,viewWillDisappear, viewWillAppear方法的 顺序和作用? ...
- 李洪强iOS经典面试题135-Objective-C
可能碰到的iOS笔试面试题(5)--Objective-C 面试笔试都是必考语法知识的.请认真复习和深入研究OC. Objective-C 方法和选择器有何不同?(Difference between ...
随机推荐
- centos7运维记录文档
问题一:故障记录时间2019年4月4日,查看系统日志报错如下: tail -f /var/log/messages Apr 4 16:29:16 localhost kernel: tracker-e ...
- 03-docker入门-创建 docker 镜像
方法1:从运行的容器创建方法2:编写 DockFile 文件创建 方法1: 打包镜像 docker commit -m "Test a change" 610 ubuntu:tes ...
- 模板语言、url
伪造一个数据库全局变量 (字典无序) USER_LIST 列表变字典(元祖和列表直接循环就好,字典涉及到k_v) UESR_DICT 遍历方法 1. 2. 3. 4. 5. 6.键入链接 通过a标签包 ...
- mui或者uni退出app
在安卓上可以使用 //1.1 var backButtonPress = 0; $.back = function(event) { backButtonPress++; if(backButtonP ...
- MyBatisSystemException 【exception】
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: ...
- django -- ORM实现作者增删改查
前戏 前面我们已经实现了出版社的增删改查,书的增删改查,书和出版社的对应关系.现在来写一下作者的增删改查和书的对应关系,那书和作者有什么关系呢?一个作者可以写多本书,一本书可以有多个作者,所以书和作者 ...
- nodejs内存溢出 FATAL ERROR: CALL_AND_RETRY_0 Allocation failed – process out of memory
spa项目整体迁移转为ssr后,改动之后部署一切还好,就是突然有一天访问人数太多,node进程很容易就挂了自动重启. 最后经过压力测试,考虑到是堆内存溢出的问题,就报错误:FATAL ERROR: C ...
- RedHat linux服务器安装elasticsearch且设置公网访问
0. 首先需要安装jdk,因为elasticsearch是Java写的,默认需要Java环境,且安装elasticsearch 7.x需要使用jdk 1.8或更高版本 1. 执行以下命令,创建elas ...
- Shell脚本之三 传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推-- 实例 向脚本传递三个参数,并分 ...
- python 统计字符串中指定字符出现次数的方法
python 统计字符串中指定字符出现次数的方法: strs = "They look good and stick good!" count_set = ['look','goo ...