类型转换问题

     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. centos7运维记录文档

    问题一:故障记录时间2019年4月4日,查看系统日志报错如下: tail -f /var/log/messages Apr 4 16:29:16 localhost kernel: tracker-e ...

  2. 03-docker入门-创建 docker 镜像

    方法1:从运行的容器创建方法2:编写 DockFile 文件创建 方法1: 打包镜像 docker commit -m "Test a change" 610 ubuntu:tes ...

  3. 模板语言、url

    伪造一个数据库全局变量 (字典无序) USER_LIST 列表变字典(元祖和列表直接循环就好,字典涉及到k_v) UESR_DICT 遍历方法 1. 2. 3. 4. 5. 6.键入链接 通过a标签包 ...

  4. mui或者uni退出app

    在安卓上可以使用 //1.1 var backButtonPress = 0; $.back = function(event) { backButtonPress++; if(backButtonP ...

  5. MyBatisSystemException 【exception】

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: ...

  6. django -- ORM实现作者增删改查

    前戏 前面我们已经实现了出版社的增删改查,书的增删改查,书和出版社的对应关系.现在来写一下作者的增删改查和书的对应关系,那书和作者有什么关系呢?一个作者可以写多本书,一本书可以有多个作者,所以书和作者 ...

  7. nodejs内存溢出 FATAL ERROR: CALL_AND_RETRY_0 Allocation failed – process out of memory

    spa项目整体迁移转为ssr后,改动之后部署一切还好,就是突然有一天访问人数太多,node进程很容易就挂了自动重启. 最后经过压力测试,考虑到是堆内存溢出的问题,就报错误:FATAL ERROR: C ...

  8. RedHat linux服务器安装elasticsearch且设置公网访问

    0. 首先需要安装jdk,因为elasticsearch是Java写的,默认需要Java环境,且安装elasticsearch 7.x需要使用jdk 1.8或更高版本 1. 执行以下命令,创建elas ...

  9. Shell脚本之三 传递参数

    我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推-- 实例 向脚本传递三个参数,并分 ...

  10. python 统计字符串中指定字符出现次数的方法

    python 统计字符串中指定字符出现次数的方法: strs = "They look good and stick good!" count_set = ['look','goo ...