分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

JS面试题

发布时间:2023-09-06 01:23责任编辑:苏小强关键词:面试题

for(var i = 0; i < 5; i++) { ???setTimeout(function() { ???????console.log(i); ???});}for(var i = 0; i < 5; i++) { ???(function(i) { ???????setTimeout(function() { ???????????console.log(i); ???????}); ???})(i);}

结果:  

5
5
5
5
5
0
1
2
3
4

setTimeOut()会在所有可执行函数执行后在执行。

匿名函数会立即执行。

function foo1() { ???var value = 1 + ???????1 ???return value;}//JS中如果一个语句以[(/+-开头,就有可能和上一句加在一起解析function foo2() { ???return ???{ ???????bar: ‘hello‘ ???};} ?????//return 后会自动添加分号,不管下一条语句是什么console.log(foo1());console.log(foo2());

  结果:

2
undefined

(function() { ???var a=b= 3 ;})();//a是局部变量,匿名函数运行完毕直接销毁,b声明为全局变量,会一直存在。console.log("a defined? " + (typeof a !== ‘undefined‘));console.log("b defined? " + (typeof b !== ‘undefined‘));console.log(b);console.log(typeof a);

  结果:

a defined? false
b defined? true
3
undefined

var object = { ???foo: "bar", ???func: function() { ???????var self = this; ???????console.log(this); ???????console.log("outer func: this.foo = " + this.foo); ???????console.log("outer func: this.foo = " + self.foo); ???????(function() { ???????????console.log("inner func: this.foo = " + global.foo); ???????????console.log("inner func: this.foo = " + self.foo); ???????})(); ???}};//global 是 javascript 运行时所在宿主环境提供的全局对象,是一个 Object。目前来说最常见的宿主环境是浏览器和 nodejs,浏览器暴露了一系列操作 DOM, Location, History 等 Api 供 Js 调用(即 window 对象)而 nodejs 里则没有浏览器里的 DOM 等,可以运行 for (var i in global){console.log(i)} 查看这个全局对象提供的方法,如 process, buffer 这些 nodejs 的资源。//匿名函数的this指的是global对象(nodejs环境下)浏览器环境下就是window对象object.func();

  结果:

{ foo: ‘bar‘, func: [Function: func] }
outer func: this.foo = bar
outer func: this.foo = bar
inner func: this.foo = undefined
inner func: this.foo = bar

var scope = "global";function func() { ???console.log(scope); ???var scope = "local";}//变量提升 ?undefinedfunc();

  

console.log((function f(n) { return ((n > 1) ? n * f(n-1) : n); })(10));//阶乘 ?匿名函数//结果是10的阶乘的结果console.log((function (n) { ???return n;})(8))//匿名函数 第二个括号是函数参数

  

console.log("1" + 1); ?????//字符前加+ -会把它变成number类型console.log(1 + "2" + "2"); ?//122console.log(1 + +"2" + "2"); //32console.log(1 + -"1" + "2"); ?//02console.log(+"1" + ?"1" + "2"); ??//112console.log("A" - "B" + "2"); ????//NaN2console.log("A" - "B" + 2); ??//NaN +2 还是NaNconsole.log("A" - "B"); //NaN//JS在进行这种运算时 仅仅会在2个值相加时优先推断为string类型 其它情况下(比如“-”。“*”。“/”)都默觉得number型运算。

  

//判断一个方法是不是数组//方法一function isArray(obj) { ???return Object.prototype.toString.call(obj) === "[object Array]";}//方法二function isArray(obj) { ???return obj.__proto__ === Array.prototype;}//方法三(ES5)Array.isArray(obj);

  

function Example() { ???getName = function() { console.log(1); }; ???return this;}Example.getName = function() { console.log(2); };Example.prototype.getName = function() { console.log(3); };console.log(typeof Example); ?//functionconsole.log(typeof Example()); //objectExample.getName(); ??????????//函数的方法Example().getName(); ?????????//对象的方法new Example.getName(); ???????//new 一个函数的方法 结果还是2new Example().getName(); ?????//原型对象方法,实例共享时使用

  结果:

function
object
2
1
2
3

JS面试题

原文地址:http://www.cnblogs.com/lilight/p/7800445.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved