JS稀奇古怪题目
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稀奇古怪题目的更多相关文章
- JS经典题目解析
此次列举出一些觉得有意思的JS题目(来源于出了名的44题),相信有非常多关于这些题目的博客,写这篇博客的目的在于巩固一些知识点,希望能和读者共同进步. 1. map函数执行过程 ["1&qu ...
- 一道短小精悍的JS小题目
看到题目你是不是以为我在开车,没错,我就不承认,你能咋的,你瞅啥,别瞅我,瞅题 题目是这样式的 结果是啥呀,这里我就不买关子了,结果是undefined,相信基础好一点的大佬们一眼就能看出来,像我这种 ...
- js在线题目
在线题目: https://www.nowcoder.com/ta/js-assessment
- js小题目(持续更新)
总是感觉之前做过的问题很久没碰的话就会忘掉,于是打算专门开一个记录小题目的随笔当题典用. 目录 五种主要数据类型进行值复制 数组去重 数组去重并计数 实现clone()方法,对五种主要数据类型进行值复 ...
- JS面试题目
哪些地方会出现css阻塞,哪些地方会出现js阻塞? js的阻塞特性: 所有浏览器在下载JS的时候,会阻止一切其他活动,比如其他资源的下载,内容的呈现等等.直到JS下载.解析.执行完毕后才开始继续并行下 ...
- js 一道题目引发的正则的学习
正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...
- 2016年JS面试题目汇总
1.怎样添加.移除.移动.复制.创建和查找节点? //1)创建新节点 createDocumentFragment() //创建一个DOM片段 createElement() //创建一个具体的元素 ...
- js一些题目
假期在家,看到的,昨天看了下: 原文链接:http://wwwcqamin.duapp.com/?p=102#comment-7 请说出下面程序的输出结果 第一题: 1 2 3 4 5 6 7 8 9 ...
- js作用域题目
window.number = 4var obj = { 'number': 4, 'tbl': (function(){ this.number *= 2; console.log(this.num ...
随机推荐
- FusionInsight大数据开发---Flume应用开发
Flume应用开发 要求: 了解Flume应用开发适用场景 掌握Flume应用开发 Flume应用场景Flume的核心是把数据从数据源收集过来,在送到目的地.为了保证输送一定成功,发送到目的地之前,会 ...
- 集合单列--Colletion
集合 学习集合的目标: 会使用集合存储数据 会遍历集合,把数据取出来 掌握每种集合的特性 集合和数组的区别 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型 ...
- 爬虫框架之selenium
Selenium 一.概述 Web自动化测试工具,可以运行在浏览器,根据指令操作浏览器 只是工具,必须与第三方浏览器结合使用 安装: Linux:sudo pip3 install selenium ...
- NVDLA软件架构和源码解析 第一章—内核驱动【华为云技术分享】
驱动整体设计介绍 不同的processor Nvidia DLA的内核驱动KMD(Kernel mode driver)中,并不是把DLA当成一个设备来控制,而是把不同的功能模块当做不同的proces ...
- SQL系列(九)—— 子查询(subQuery)
1.子查询 前面的系列介绍的都是简单的查询场景,其中都只涉及到单张表的数据检索.但是在日常是实际应用中,数据模型之间的关系都非常的复杂,数据的需求一般都是来源于多个数据模型之间的组合而成,即对应多张表 ...
- sqlserver读取日志以及复制
首选,在事务日志中,到底有多少是需要复制的?使用以下命令,可以确定事务日志中被标志为复制的命令有多少. USE test GO SELECT count(*) FROM ::fn_dblog(NULL ...
- .NET Core解析DNS域名或主机名的方法
在.NET Core中我们可以用System.Net.Dns类来解析域名或主机名的IP地址,我们新建一个.NET Core控制台项目,写入下面代码: using System; using Syste ...
- C#多线程的同步与通信
C#中使用lock和Monitor控制多线程对资源的使用,最常见的生产者和消费者问题就是多线程同步和通信的经典例子.了解C#多线程的同步与通信. 一.关于lock和Monitor lock可以把一段代 ...
- Java自学-异常处理 异常分类
Java 中异常的分类 异常分类: 可查异常,运行时异常和错误3种 其中,运行时异常和错误又叫非可查异常 步骤 1 : 可查异常 可查异常: CheckedException 可查异常即必须进行处理的 ...
- 使用Python搭建http服务器
David Wheeler有一句名言:“计算机科学中的任何问题,都可以通过加上另一层间接的中间层解决.”为了提高Python网络服务的可移植性,Python社区在PEP 333中提出了Web服务器网关 ...