JS稀奇古怪题目:

1.操作对象属性优先级高于普通赋值操作

     var a = {
n: 1
};
var b = a; //操作对象属性优先级高于普通赋值操作
a.x = a = {
n: 2
}; console.log(a.n, b.n); // 2 1
console.log(a.x, b.x); //undefined Object

2.作用域只有局部和全局,没有对象作用域。

只能查找局部和全局作用域

 var obj = {
fn2:function(){
console.log(fn2);
}
}
obj.fn2(); //error: fn2 is not defined

修改绑定当前调用对象obj

 var obj = {
fn2:function(){
console.log(this.fn2);
}
}
obj.fn2(); //function(){console.log(this.fn2);}

3.变量提升

 var a = 2;
function fn(){
//局部变量提升
console.log(a);
var a = 3; }
fn(); //undefined function fn2(){
console.log(a);
a = 3; }
fn2(); //2 [局部没有a,全局此时为2,之后为3]

只看全局和function作用域不看if则if中的var name 变量提升了:

 var name = "hello";

 (function(){
if(typeof name === 'undefined'){
var name = 'world';
console.log(name);
}else{
console.log(name);
}
})(); //word

4.同名变量和函数

首先变量提升,但函数声明总是覆盖同名变量

  • 如果同名变量没有赋值,则类型一定是function
  • 如果同名变量赋值了,

    • 如果打印语句在赋值之后,则类型一定是number
    • 如果打印语句在赋值之前,则类型一定是function

(1)变量在函数前且有赋值

 var b;
function b(){ }
console.log(typeof b); //function console.log(typeof b); //function

(2)变量在函数前且无赋值

 var b = 3;
function b(){ }
console.log(typeof b); //number console.log(typeof b); //number

(3)变量在函数后且无赋值

 function b(){

 }
var b;
console.log(typeof b); //function console.log(typeof b); //function

(4)变量在函数后且有赋值

 function b(){

 }
var b = 3;
console.log(typeof b); //number console.log(typeof b); //number

5.线程

主线程执行完毕之后,在从callback queue中取回调函数执行

var a = 6;
setTimeout(function(){
console.log(0);
alert(a);
a = 666;
},0); console.log(1);
a = 66;

执行主线程: 打印1,然后a = 66,在执行定时器回调函数打印0,弹框值66

6.原型链

注意:是在Function的原型上加方法,不是在F函数对象上加方法

 // var F = function(){}

 function F(){

 }

 Object.prototype.a = function(){
console.log("a()");
} Function.prototype.b = function(){
console.log("b()");
} var f = new F(); F.a();//a()
F.b();//b()
f.a();//a()
f.b();//报错

JS稀奇古怪题目的更多相关文章

  1. JS经典题目解析

    此次列举出一些觉得有意思的JS题目(来源于出了名的44题),相信有非常多关于这些题目的博客,写这篇博客的目的在于巩固一些知识点,希望能和读者共同进步. 1. map函数执行过程 ["1&qu ...

  2. 一道短小精悍的JS小题目

    看到题目你是不是以为我在开车,没错,我就不承认,你能咋的,你瞅啥,别瞅我,瞅题 题目是这样式的 结果是啥呀,这里我就不买关子了,结果是undefined,相信基础好一点的大佬们一眼就能看出来,像我这种 ...

  3. js在线题目

    在线题目: https://www.nowcoder.com/ta/js-assessment

  4. js小题目(持续更新)

    总是感觉之前做过的问题很久没碰的话就会忘掉,于是打算专门开一个记录小题目的随笔当题典用. 目录 五种主要数据类型进行值复制 数组去重 数组去重并计数 实现clone()方法,对五种主要数据类型进行值复 ...

  5. JS面试题目

    哪些地方会出现css阻塞,哪些地方会出现js阻塞? js的阻塞特性: 所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等.直到JS下载.解析.执行完毕后才开始继续并行下 ...

  6. js 一道题目引发的正则的学习

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  7. 2016年JS面试题目汇总

    1.怎样添加.移除.移动.复制.创建和查找节点? //1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 ...

  8. js一些题目

    假期在家,看到的,昨天看了下: 原文链接:http://wwwcqamin.duapp.com/?p=102#comment-7 请说出下面程序的输出结果 第一题: 1 2 3 4 5 6 7 8 9 ...

  9. js作用域题目

    window.number = 4var obj = { 'number': 4, 'tbl': (function(){ this.number *= 2; console.log(this.num ...

随机推荐

  1. Angular的Observable可观察对象(转)

    原文:https://blog.csdn.net/qq_34414916/article/details/85194098 Observable 在开始讲服务之前,我们先来看一下一个新东西——Obse ...

  2. mybatis-plus 主键自增问题

    主键不自增:返回值是插入的条数 <insert id="add" parameterType="EStudent"> insert into TSt ...

  3. ELK学习笔记之Kibana查询和使用说明

    0x00 概述 elasticsearch构建在Lucene之上,过滤器语法和Lucene相同 Kibana接口概述 Kibana接口分为四个主要部分: 发现 可视化 仪表板 设置 我们将按照列出的顺 ...

  4. C# vb .net图像合成-合成矩形

    在.net中,如何简单快捷地实现图像合成呢,比如合成文字,合成艺术字,多张图片叠加合成等等?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码 ...

  5. java基础小练习,1-打印一百次(1~10)的随机数,2-固定一个随机数(1~100),然后猜出他,3-定义以指定格式打印集合(ArrayList类型作为参数),使用{}括起来,使用@代替,分隔每个元素

    推荐自己码一下,可以使用别的方法,面向对象,不需要注重过程 /* 题目:我需要打印一百次(1~10)的随机数 */ import java.util.Random; public class demo ...

  6. 英语hecatolite月长石hecatolite月光石

    月长石英文名字为hecatolite即月光石.当白色的光照到宝石上因宝石内特殊的结构而产生干涉颜色,在宝石表面可见到白至淡蓝色的闪光,犹如朦胧月光.这是由于正长石出溶有钠长石,钠长石在正长石晶体内定向 ...

  7. 解决apscheduler报错:Run time of job …… next run at: ……)” was missed by

    在Django中使用apscheduler django_apscheduler 实现定时任务, 来完成数据拉取. 一段时间后发现数据量对不上,遂查日志 发现报错如下: Run time of job ...

  8. Axios的简单用法

    一转眼Vue 3.0都要发布了,学习使用Vue也有一段时间了,记录一下axios的用法 Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中,有点类似于aja ...

  9. Mysql 存储过程初识

    存储过程 认识 在一些编程语言中, 如pascal, 有一个概念叫"过程" procedure, 和"函数" function, 如VB中的sub. Java, ...

  10. AM335X UBOOT(以UART为例分析UBOOT主要流程)

    UBOOT2016.05 UART初始化及设置 SPL阶段 第一部分C函数 |- s_init //(arch/arm/cpu/armv7/am33xx/board.c) |- set_uart_mu ...