类型转换问题

     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. 2017-2018 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2017)

    2017-2018 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2017) 全靠 wxh的博客 补完这套.wx ...

  2. Pandas | 22 时间差

    时间差(Timedelta)是时间上的差异,以不同的单位来表示.例如:日,小时,分钟,秒.它们可以是正值,也可以是负值.可以使用各种参数创建Timedelta对象,如下所示 - 字符串 通过传递字符串 ...

  3. Pandas | 05 基本功能

    到目前为止,我们了解了三种Pandas数据结构以及如何创建它们.接下来将主要关注数据帧(DataFrame)对象,因为它在实时数据处理中非常重要,并且还讨论其他数据结构. 一.系列基本功能 编号 属性 ...

  4. Linux中一些命令的区别

    1. yum provides 和 yum search provides是在文件中查找软件,类似于rpm -qf: search是查找软件包或其描述的关键字. 2. gzip  和  bzip2 对 ...

  5. PATB1021个数统计

    参考代码: #include<cstdio> #include<cstring> #include<cstdlib> int main() { char str[1 ...

  6. bzoj2839 集合计数 组合计数 容斥原理|题解

    集合计数 题目描述 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是 ...

  7. Android Studio 之 ROM【1】, Entity,Dao,Database

    Android Studio 之 ROM, Entity,DAO,DataBase 1.Entity 实体类 package com.example.roombasic; import android ...

  8. Redis 动态字符串 SDS 源码解析

    本文作者: Pushy 本文链接: http://pushy.site/2019/12/21/redis-sds/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可 ...

  9. Shell脚本之六 数学计算

    前面一节Shell篇之五 基本运算符介绍了常见的 Shell 算术运算符,这节介绍 Shell 的数学计算.Shell 和其它编程语言不同,Shell 不能直接进行算数运算,必须使用数学计算命令. 下 ...

  10. odoo @api.constrains _sql_constrains

    实现机制: @api.constrains('fields') 服务器启动时将模型中的所有约束方法注册到对象池中: 在create.write时会根据创建或修改的fields检查是否有对应的约束方法, ...