//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. Classes as objects

    Before understanding metaclasses, you need to master classes in Python. And Python has a very peculi ...

  2. Docker学习笔记(2)-docker镜像操作

    本节将会涉及Docker的镜像操作. 1. 获取镜像 如何获取Docker Hub上的镜像?可通过docker pull命令获取,其格式为: docker pull [选项] [Docker Regi ...

  3. HDU 4512——吉哥系列故事——完美队形I——————【LCIS应用】

    吉哥系列故事——完美队形I Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  4. 新浪微博OAuth2授权错误 error:redirect_uri_mismatch

    最近想在app进行新浪微博认证,结果发现总是报error:redirect_uri_mismatch错误. 网上搜了解决方法. 进入 http://open.weibo.com/apps/app_ke ...

  5. 获得数据库image图片二进制

    /// <summary>        /// 获得图片二进制        /// </summary>        /// <param name="u ...

  6. 前端如何做好SEO优化

    https://www.cnblogs.com/weiyf/p/9511021.html 一:什么是SEO? 搜索引擎优化(Search Engine Optimization),简称SEO.是按照搜 ...

  7. Mysql慢查询 [第一篇]

    一.简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 二.参数说明 slow_query_log 慢查询开启状态slow_q ...

  8. sharepoint2007就地升级2010系列(五)升级到sharepoint2010

    ---恢复内容结束--- 大家下午好 今天我们来完成最后一步,sharepoint2007升级2010.其实我反倒没有那么紧张了,因为我最担心的数据库升级,已经过了. OK,话不多说,让我们直接开始吧 ...

  9. 文件上传PHP

    <?php $targetIp = GetIP(); $fileUpload = 'fileUpload'; $frameCount = 'frameCount'; $fileName = $_ ...

  10. Asp.net防御XSS攻击组件库

    一.AntiXss 翻看mvc4高级编程,偶看到作者强烈推荐使用AntiXss防御XSS攻击,收集资料看下. 目前类库已融入到.netframework中,类库主页不再更新. 使用方法:使用Nuget ...