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 ...
随机推荐
- latex设置不同中英文字体
latex中,中文我喜欢宋体,英文喜欢Courier New,于是,我分别设置了中英文字体,文章瞬间顺眼了很多. \documentclass[UTF8]{ctexart} \usepackage[a ...
- 整理:C#中Expression表达式的妙用
原文:整理:C#中Expression表达式的妙用 一.目的:通过示例了解C#中Expression表达式的作用,通过表达式和反射可以写出很优雅的代码和架构,也可以完成一些看似不可能完成的任务 二.示 ...
- mvc_第一章后入门_第一遍_控制器和视图
在掌握了数据库访问方法之后,我们来看几个mvc的入门程序,借此熟悉mvc的常见工作方式. 一.创建项目,显示一个最简单的页面. 要点:1.为了突出重点,不使用模版:2.项目类型为mvc,便于获得vs添 ...
- 接口XMPPConnection
接口XMPPConnection 所有已知的实现类: AbstractXMPPConnection,XMPPBOSHConnection,XMPPTCPConnection 公共接口XMPPConne ...
- keras学习入门一
基本概念 1. 张量 tensor 所有的数据类型都可以看成是张量,可以看成是向量,矩阵在推广 张量的阶,有时候也叫维度,或是轴(axis) 0阶张量如 [] ,5 也叫做标量 1阶张量 如 [ 1, ...
- Java自学-数字与字符串 StringBuffer
Java StringBuffer常见方法 StringBuffer是可变长的字符串 示例 1 : 追加 删除 插入 反转 append追加 delete 删除 insert 插入 reverse 反 ...
- Apache配置WebSocket代理
引入mod_proxy_wstunnel.so模块,使其可以解析ws.wss协议 LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel ...
- DOM创建节点
1.DOM--document object model 常用的节点类型: 元素节点:(标签) 属性节点:(标签里的属性) 文本节点:(文本节点) 2,document有个属性叫nodetype,返回 ...
- [Flutter] 实现Flutter App内更新
app内实现根据安卓和IOS平台进行更新 时间匆忙,相关操作以及信息都写在代码注释里面了,闲时在补充和完善. 功能在android项目中测试可用,ios上还未进行测试,如果ios有问题或者没问题的话都 ...
- JavaScript 之 history对象
location.history 对象是浏览器的一个历史对象,可以用来前进和后退. 1.back() 方法 history.back(); 浏览器的历史记录会记录原来的地址,这个方法将会返回到上一页. ...