类型转换问题

     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高频经典面试题总结的更多相关文章

  1. 170106、用9种办法解决 JS 闭包经典面试题之 for 循环取 i

    闭包 1.正确的说,应该是指一个闭包域,每当声明了一个函数,它就产生了一个闭包域(可以解释为每个函数都有自己的函数栈),每个闭包域(Function 对象)都有一个 function scope(不是 ...

  2. 用9种办法解决 JS 闭包经典面试题之 for 循环取 i

    2017-01-06 Tomson JavaScript 转自 https://segmentfault.com/a/1190000003818163 闭包 1.正确的说,应该是指一个闭包域,每当声明 ...

  3. Java高频经典面试题(第一季)五:递归与迭代

    编程题:  有n步台阶, 一次只能上 1步 或 2步, 共有多少种走法? 递归 循环迭代 递归: package will01; import org.junit.Test; public class ...

  4. Java高频经典面试题(第一季)四:方法的参数传递机制

    考点? 方法的参数传递机制 String,包装类等对象的不可变性 方法的参数传递机制: ①形参是基本数据类型 传递数据值 ②实参是引用数据类型 传递地址值 特殊的类型:String.包装类等对象不可变 ...

  5. Java高频经典面试题(第一季)一:自增的分析

    package will01; public class testZiZeng { public static void main(String[] args) { int i = 1; i = i ...

  6. 李洪强iOS经典面试题147-WebView与JS交互

    李洪强iOS经典面试题147-WebView与JS交互   WebView与JS交互 iOS中调用HTML 1. 加载网页 NSURL *url = [[NSBundle mainBundle] UR ...

  7. 李洪强iOS经典面试题153- 补充

    李洪强iOS经典面试题153- 补充   补充 有空就来解决几个问题,已经懒癌晚期没救了... UML 统一建模语言(UML,UnifiedModelingLanguage)是面向对象软件的标准化建模 ...

  8. 李洪强iOS经典面试题140-UI

    李洪强iOS经典面试题140-UI   UI viewcontroller的一些方法的说明viewDidLoad,viewWillDisappear, viewWillAppear方法的 顺序和作用? ...

  9. 李洪强iOS经典面试题135-Objective-C

    可能碰到的iOS笔试面试题(5)--Objective-C 面试笔试都是必考语法知识的.请认真复习和深入研究OC. Objective-C 方法和选择器有何不同?(Difference between ...

随机推荐

  1. Spring AOP技术本质认识

    Spring AOP技术本质认识 一.AOP简介   AOP(Aspect Oriented Programming,面向切面编程),把某一类问题集中在一个地方进行处理,比如处理程序中的点击事件.打印 ...

  2. LCD12864

    /* LCD Arduino PIN1 = GND PIN2 = 5V RS(CS) = 8; RW(SID)= 9; EN(CLK) = 3; PIN15 PSB = GND; */ #includ ...

  3. ESA2GJK1DH1K升级篇: 升级STM32 预热: 单片机定时 使用 http 获取云端文本文件里面的内容,然后显示在液晶屏

    前言: 实现功能概要 STM32使用AT指令控制Wi-Fi以TCP方式连接咱上节安装的Web服务器,然后使用http的get协议获取云端文本文件里面的内容, 然后把获取的数据显示在OLED液晶屏.   ...

  4. 抓住九月的尾巴分享一个插件XLSX

    git官网 安装: cnpm install --save xlsx file-saver .vue文件中:1. 引用table插件/自己写table布局 <el-table id=" ...

  5. Oracle_12541错误和ora-12514错误

    ORA-12541: TNS无监听程序错误 在oracle安装目录(E:\app\Administrator\product\instantclient_12_1\NETWORK\ADMIN)下查找l ...

  6. libevent笔记2:Hello_World

    本篇通过libevent提供的Hello_World demo简单介绍基于libevent的TCP服务器的实现 listener listener是libevent提供的一种监听本地端口的数据结构,在 ...

  7. react-native 设置启动模拟器

    react-native 设置启动模拟器 查看iOS可选设备: xcrun simctl list devices iPhone7 Plus启动(下次启动会默认使用最后一次选择设备,直接启动npx r ...

  8. 一文带你了解elasticsearch

    一文带你了解elasticsearch cxf2102100人评论160人阅读2019-07-02 21:31:36   elasticsearch es基本概念 es术语介绍 文档Document ...

  9. 《Linux就该这么学》培训笔记_ch16_使用Squid部署代理缓存服务

    <Linux就该这么学>培训笔记_ch16_使用Squid部署代理缓存服务 文章最后会post上书本的笔记照片. 文章主要内容: 代理缓存服务 配置Squid服务程序 正向代理 标准正向代 ...

  10. Spring Boot 2整合Redis做缓存

    既然是要用Redis做缓存,自然少不了安装了.但是本文主要讲Spring Boot与Redis整合.安装教程请另行百度! 1.首先是我们的Redis配置类 package com.tyc; impor ...