//console.log(a[b]);
var a={};
var b={key:'b'};
var c={key:'c'};
a[b] = 456;
a[c] = 123;
console.log(a[b]); //"123"
console.log(a[c]); //"123"
var obj1 = {x: 1};
var num1 = 1;
var arr1 = [obj1, num1];
obj1 = {x: 2};
num1 = 2;
console.log(arr1[0].x, arr1[1]);// 1 1 var arr2 = arr1;
obj1.x = 3;
arr1[1] = 3;
console.log(arr2[0].x, arr2[1])//1 3
Promise.resolve().then(() => {
console.log(1);
return Promise.reject();
}).catch(()=>{
console.log(2);
}).catch(()=>{
console.log(3);
}).then(()=>{
console.log(4);
})
// 1 2 4
//
(function(x) {
return (function(y) {
console.log(x);
})(1);
})(2);//"2"
//闭包的应用
for(var i=0;i<5;i++){
setTimeout(function(){
console.log(i);
},1000*i);
}//->5 5 5 5 5 for(var i=1;i<=5;i++){
(function(j){
setTimeout(function(){
console.log(j);
},1000*j);
})(i);
}//->1 2 3 4 5
for(var i=1;i<=5;i++){
(function(i){
setTimeout(function(){
console.log(i);
},1000);
})(i);
}//->1 2 3 4 5
for(var i=1;i<=5;i++){
setTimeout(function(i){
console.log(i);
},1000*i,i);
}//->1 2 3 4 5 for(let i=1;i<=5;i++){
setTimeout(function(){
console.log(i);
},1000*i);
}//->1 2 3 4 5
var fn = function() {
var c = "bbb";
return {
a: function(){
return c;
},
b: function(d) {
c = d;
}
}
}();
console.log(fn.a());//bbb
console.log(fn.b('ccc'));//undefined
console.log(fn.c);//undefined
var out = (function(x){
delete x;
return x;
})(0);
console.log(out);// var x=1;
var out = (function(){
delete x;
return x;
})();
console.log(out);// //
if(10>9>8==true) {
console.log('html');
}else{
console.log('css');
}//css //
var len =0;
function f(){
console.log(this.len);
}
var obj = {
len:5,
met: function(f){
f();
}
};
obj.met(f,1);// //
const data = {};
data===1;//false
data=1;//TypeError
data.size=100;// //
function foo() {
let p;
for(let i=0;i<3;i++){//let声明的i只在块级作用域中有效
if(i==2){
p = function(){//返回值给了外部变量p=2;
return i;
}
}
}
console.log(p());//取值是2而不是3;
console.log(i);//
}
foo();// //
function foo() {
let p;
for(var i=0;i<3;i++){//var 声明的变量全局有效
if(i==2){
p = function(){
return i;//全局的i决定let声明的变量p
}
}
}
console.log(p());//
console.log(i);//
}
foo(); //对象调用方法时总是先从实例中寻找,然后再向原型对象中查找
function A(){
this.fn = function(){
return 1;
}
}
A.prototype.fn = function(){return 2};
var a = new A();
a.fn();// //
function Foo(){
var i=0;
return function(){
console.log(i++);
}
}
var f1 = Foo();
var f2 = Foo();
f1();//
f2();// //
function f1(){
var a = 10;
if(a>5){
var b = 7;
}
console.log(b);
}
function f2(){
var a = 10;
if(a>5){
const b = 7;
}
console.log(b);
}
f1();//
f2();//ReferenceError: b is not defined //
var foo = {
x:1
};
function bar() {
console.log(this.x);
}
bar.apply(foo);//
bar.call(foo);//
bar.bind(foo)();// //重写bind
Function.prototype._bind = function(ctx){
var that=this;
return function(){
return that.apply(ctx, arguments);
};
}
bar._bind(foo)();// //
var F = function(){};
Object.prototype.a = function(){}
Function.prototype.b = function(){};
var f = new F();
'a' in f;//true
'a' in F;//true
'b' in f;//false
'b' in F;//true //
var obj1 = {
x:1
}
var obj2 = Object.create(obj1);
obj1===obj2.__proto__;//true
obj1.hasOwnProperty('x');//true
obj2.hasOwnProperty('x');//false
obj1.x===obj2.x;//true //
const a = /123/gi;
const b = /123/gi;
console.log(a==b);//false
console.log(a===b);//false
var t1 = new Date('2018-07-02');//Mon Jul 02 2018 08:00:00 GMT+0800 (中国标准时间)
var t2 = new Date(2018,07,02);//Thu Aug 02 2018 00:00:00 GMT+0800 (中国标准时间)
t1.getDay();//
t2.getDay();//
t1.getMonth();//
t2.getMonth()//7
t1.getDate();//2
t2.getDate();//2
t1.getTime();//毫秒數
t2.getTime();
t1.getHours();
t1.getMinutes();
t1.getSeconds();
//变量提升
function baidu() {
console.log(val);
var val = 'b';
console.log(val);
}
baidu();// undefined b (function(){
var a = b = 100;
})();
typeof a;//undefined (不能访问私有作用域中的变量)
typeof b;//number (b没有指定类型,自动变为全局变量)
//函数提升与变量提升
console.log(typeof a);
function a(){};
var a;// function com(10,100);//执行函数提升后的最后一个函数
var com = function(a,b){//函数表达式不会被提升
console.info(a*b);
}
function com(a,b) {//函数声明被提升到顶部
console.info(a+b);
}
function com(){//函数声明被提升到顶部
console.info((a+b)*2);
}
com(2,10);执行函数表达式;
// 220 20
//trim实现去除首尾空格
function trim(str){
return str.replace(/(^\s*)|(\s*$)/g, "");
}
trim(" a bc de ");//"a bc de" "1.2.3".split('') //的等价方法
"1.2.3".split(/(\.)/); var s1 = new String('fe');
var s2 = new String('fe');
console.log(s1==s2)//false
console.log(s1===s2)//false var foo = 10+'20'-10//
console.log(" AB"<" CD")//true
//函数长度
(function(a,b,c){}).length;//
(function(a,b,c=3){}).length;//
(function(a=1,b,c){}).length;//
(function(a,b=2,c){}).length;//
//打印数组中重复元素
function dedupe(array) {
var newArr = [];
var no =[];
for(var i=0; i<array.length; i++) {
if(newArr.indexOf(array[i]) == -1) {
newArr.push(array[i]);
} else {
no.push(array[i]);
}
}
return no;
}
var arr = [1, 1, 2, 3, 4, 5, 5];
console.log(dedupe(arr));//[1, 2, 3]
 
const timeout = ms => new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, ms);
}); const ajax1 = () => timeout(2000).then(() => {
console.log('1');
return 1;
}); const ajax2 = () => timeout(1000).then(() => {
console.log('2');
return 2;
}); const ajax3 = () => timeout(2000).then(() => {
console.log('3');
return 3;
}); const mergePromise = ajaxArray => {
// 在这里实现你的代码
var data=[];
var res = Promise.resolve();
ajaxArray.forEach(function(item){
res = res.then(item).then(function(ref) {
data.push(ref);
return data;
});
});
return res;
}; mergePromise([ajax1,ajax2,ajax3]).then(data => {
console.log('done');
console.log(data);
});
//
//1
//2
//3
//done
//[1,2,3]

//重写 console.log()
//1.
console.log = (function(self) {
return function(){
var args = Array.prototype.slice.call(arguments, 0);
self.apply(console, args);
}
})(console.log);
//2.
var log = console.log;
console.log = function(text) {
var args = Array.prototype.slice.call(arguments, 0);
log.apply(console, args);
};
console.log([1,2,3,[1,2,3]]);
//重写indexOf
Array.prototype.indexOf = function(searchElement){
var index,
_arguments = this,
args = Array.prototype.slice.call(_arguments),
count=0;
for(var x in args){
if(args[x] === searchElement)
{
index = x;
count=1;
break;
}
}
if(!count)
return -1;
return index;
};
var arr = [1,2,3,4,5,6];
var index = arr.indexOf(6);
console.log(index);
// wrap: 3
// arr: [1,2,3,4,5,6,7,8]
// output: 7 8 4 5 6 1 2 3 function flatten(arr) {
var res = [];
for(var item of arr){
if(Array.isArray(item)){
var child = flatten(item);
//res = res.concat(child);
res.push(...child);
}
else
res.push(item);
}
return res;
}
function groupOutput(wrap, arr) {
var newarr=[], len = arr.length;
for(var i=0;i<len; i=i+wrap){
var args = arr.slice(i,i+wrap);
newarr.push(args);
}
newarr.reverse();
return flatten(newarr);
}
var res = groupOutput(5,[1,2,3,4,5,6,7,8]);
console.log(res);
//使instanceof判断某个对象是否是数组时返回false
//instanceof操作符有一个问题就是,它假定只有一个全局作用域。
//如果一个网页中有多个框架(iframe元素),那实际上就存在两个以上不同的全局执行环境,从而存在两个以上不同版本的Array构造函数。
//如果你从一个框架向另一个框架传入一个数组,那么传入的数组与在第二个框架中原生创建的数组分别具有各自不同的构造函数。
//传入的数组在该框架中用instanceof操作符判断就会返回false。
var frame=document.createElement("iframe");//创建一个框架
document.body.appendChild(frame);
var c=window.frames[0].Array;//取得框架全局执行环境中的Array构造函数
var d=new c();//在框架全局执行环境中创建一个数组d
console.log(d instanceof Array);//在当前页面的执行环境中用instanceof操作符判断d是否为数组,返回false
console.log(Array.isArray(d));//true
//获取两个时间相差的小时数
function getHour(t1,t2){
var res;
//判断日期格式是否是正确的
if(!(isNaN(t1)&&!isNaN(Date.parse(t1)))||!(isNaN(t2)&&!isNaN(Date.parse(t2)))){
console.log('0');
return;
}
t1 = new Date(t1.replace(/-/g, '/'));
t2 = new Date(t2.replace(/-/g, '/'));
var ms = Math.abs(t1.getTime()-t2.getTime());
var hour = Math.floor(ms/1000/60/60);
var min = Math.floor(ms/1000/60);
if(min%60>=0&&min%60<=29)
res = hour;
else
res = hour+0.5;
console.log(res);
}
getHour('2018-9-15 13:13','2018-9-17 13:45');
//顺丰笔试
function compare(str, str1) {
var map = {},res=[],ans;
var len = str.length,
len1 = str1.length;
for(var i=0;i<len;i++){
if(str1.indexOf(str[i])===-1)
res.push(str[i]);
}
for(var j=0;j<len1;j++){
if(str.indexOf(str1[j])===-1)
res.push(str1[j]);
}
//去重
for(var j=0;j<res.length;j++){
map[res[j]] = res[j];
}
var arr = [];
for(var key in map){
arr.push(key);
}
arr.sort();
var ans = arr.join('') + arr.reverse().join('');
return ans;
}
compare("afsd", "efrdgg");//"aegrssrgea"
//螺旋矩阵
function handler(num1, num2, num3){
var cnt=1;
while(num2!=num1 && num3!=num1 && num2>1 && num3>1){
num2--;num3--;
cnt+=(4*(num1-1));
num1-=2;
}
var x = 1,y=1;
var flag = true;
while(flag && x+1<=num1){if(x===num3 && y===num2){console.log(cnt);flag = false;}else{x++;cnt++;}}
while(flag && y+1<=num1){if(x===num3 && y===num2){console.log(cnt);flag = false;}else{y++;cnt++;}}
while(flag && x-1>=1){if(x===num3 && y===num2){console.log(cnt);flag = false;}else{x--;cnt++;}}
while(flag && y-1>=1){if(x===num3 && y===num2){console.log(cnt);flag = false;}else{y--;cnt++;}}
if(num1===1) console.log(cnt);
}
handler(4, 3, 3);

//2. 长度为n的数组分割为k段,让完成任务的工期取得最小;

JS笔试汇总的更多相关文章

  1. 常见算法是js实现汇总(转载)

    常见算法是js实现汇总 /*去重*/ <script> function delRepeat(arr){ var newArray=new Array(); var len=arr.len ...

  2. 最新Node.js 资源汇总

    Node.js 资源汇总 文档 Node.js 官方文档:http://nodejs.org/api/ Node.js 中文文档:http://nodejs.jsbin.cn/api/ Express ...

  3. JS循环汇总

    JS循环汇总 一.总结 一句话总结:js中的循环主要有while.for.for...in.for...of,循环是,要区别不同的循环对象,比如对象,数组,集合等 while for for...in ...

  4. 微信JS接口汇总及使用详解

    这篇文章主要介绍了微信JS接口汇总及使用详解,十分的全面.详尽,包含分享到朋友圈,分享给朋友,分享到QQ,拍照或从手机相册中选图,识别音频并返回识别结果,使用微信内置地图查看位置等接口,有需要的小伙伴 ...

  5. 调用手机端硬件功能 汇总(android/ios) Native.js示例汇总

    Native.js示例汇总 NJS Native.JS 示例 Native.js虽然强大和开放,但很多web开发者因为不熟悉原生API而难以独立完成.这篇帖子的目的就是汇总各种写好的NJS代码,方便w ...

  6. 前端Js框架汇总(工具多看)

    前端Js框架汇总(工具多看) 一.总结 一句话总结: 二.前端Js框架汇总 概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领 ...

  7. node.js使用汇总贴

    金天:学习一个新东西,就要持有拥抱的心态,如果固守在自己先前的概念体系,就会有举步维艰的感觉..NET程序员初用node.js最需要适应的就是异步开发,以及弱类型语言难以避免的拼写错误与弱小的语法提示 ...

  8. Native.js示例汇总

    Native.js虽然强大和开放,但很多web开发者因为不熟悉原生API而难以独立完成.这篇帖子的目的就是汇总各种写好的NJS代码,方便web开发者.众人拾柴火焰高,有能力的开发者多多提交NJS代码, ...

  9. linq to js使用汇总

    用途:方便js操作查询json数据. 下载网址:http://jslinq.codeplex.com/ 使用方法:只需要引用linq.js即可. 查询方法: 一.where查询 var myList ...

随机推荐

  1. 几种常见的排序算法Java实现总结

    public class MySort { final int MAX=20; int num[]=new int[MAX]; { System.out.print("生成的随机数组是:&q ...

  2. 《JavaScript高级程序设计》第5章 Object类型---Array---学习心得

    1.创建数组的方法: 使用Array构造函数: var colors=new Array() var colors=new Array(20)//l创建一个包含20项的数组 var colors=ne ...

  3. linux下Python2.7编译安装PyQt5

    ---作者吴疆,未经允许,严禁转载,违权必究--- ---欢迎指正,需要源码和文件可站内私信联系--- -----------点击此处链接至博客园原文----------- 功能说明:在ubuntu系 ...

  4. DotNetty 跨平台的网络通信库(转)

    久以来,.Net开发人员都非常羡慕Java有Netty这样,高效,稳定又易用的网络通信基础框架.终于微软的Azure团队,使用C#实现的Netty的版本发布.不但使用了C#和.Net平台的技术特点,并 ...

  5. 上下文ac获取为null,SpringContextUtil配置位置,以及各配置xml的加载顺序有讲究

    发现一个有趣的现象,一般job都会在执行前去初始化一次ac,而任务监视器SupervisorQueueJob不会,因此启动时初始化ac为null,SupervisorQueueJob会始终无法获取上下 ...

  6. nopCommerce 3.9 中文语言包

    点击下载:nopCommerce 3.9 中文语言包 nopCommerce39语言包.xml 下载后解压通过后台导入即可使用.如何导入?点击这里

  7. Android 切换主题换肤实现

    思路以及实现 1.主题的切换以及实现 首先我们先来明确个概念,现在我所说的切换主题,就切换整个app的颜色风格,当然也有少部分的图片的切换.注意哦 我这边说的是少部分图片哦!如果是大面积的换图片的吧! ...

  8. 如何领域驱动设计?-实践感悟&总结分享

    主要是在开发过程中,个人对于领域驱动设计的实践感悟和总结:也是对新进开发人员的培训资料:希望对关注DDD的童鞋有所帮助. 概述 领域驱动不是纯粹的技术问题,领域建模(建立数据表只是一部分)是领域专家( ...

  9. 只为更快、更省、更安全的 Azure CDN

    来来来!小编今天要公布一件大事啦: 经过最近一次更新,Azure CDN 高级版服务 HTTPS SSL 证书的申请方式有所改进啦,除了现有的 Azure CDN 代为申请证书外,还支持用户自己申请的 ...

  10. xfs管理2T以上大分区

    设置gpt硬盘 parted /dev/sdb (parted) mklabel gpt (parted) mkpart primary xfs 0 -1 (Ignore) (parted) quit ...