类型转换问题

     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. PHP随机获取预设的值

    前面我们讲了php怎么获取随机数,<?php echo rand(1000,2000); ?> 一行代码就能搞定,如果要获取ASP,PHP,JAVASCRIPT,AJAX,CSS,JQUE ...

  2. python 操作目录

    每天写一点,总有一天我这条咸鱼能变得更咸 python 中对文件及目录的操作基本依赖与os,shutil模块,其中以os模块为主,最主要的几个方法实例如下: 1.判断文件/目录是否存在(os.path ...

  3. Scrapy笔记08- 文件与图片

    Scrapy笔记08- 文件与图片 Scrapy为我们提供了可重用的item pipelines为某个特定的Item去下载文件. 通常来说你会选择使用Files Pipeline或Images Pip ...

  4. Spring Cloud微服务安全实战_2-1_开发环境

    开发环境: JDK  :1.8 IDE : idea  数据库:mysql 5.6.5 框架:springboot,mybatisplus PGA:(后边用到再安装) Promethus (普罗米修斯 ...

  5. flex布局整理以及demo

    flex: 概念: flex容器: display:flex flex项: 轴:水平的主轴.垂直的交叉轴 容器的属性: 1. flex-direction(决定主轴的方向.即项目的排列方向) 1.1 ...

  6. Python语言基础考察点:python语言基础常见考题(一)

    一.python是静态还是动态类型?是强类型还是弱类型? 1.动态强类型语言(不少人误以为是弱类型) 不要傻傻分不清 2.动态还是静态指的是编译期还是运行期确定类型 3.强类型指的是不会发生隐式类型转 ...

  7. python3 ini文件读写

    import configparser config = configparser.ConfigParser() file = 'config.ini' config.read(file) confi ...

  8. 运维-kibana常用查询使用

    1.登录服务器地址 http://kibana.ops.xxx.com.cn/ 查询语法: 支持 AND ,  OR, && || >,<  ,=模糊 *,! 1.如查询n ...

  9. java面试题——高级篇

    一.集合 Hashmap的原理 源码分析参考文章:http://www.cnblogs.com/xwdreamer/archive/2012/06/03/2532832.html 题目参考文章:htt ...

  10. MySQL重要知识点

    可能是全网最好的MySQL重要知识点 |  mp.weixin.qq.com 点击蓝色“程序猿DD”关注我 回复“资源”获取独家整理的学习资料! 标题有点标题党的意思,但希望你在看了文章之后不会有这个 ...