js

js数据类型转换

社会主义新天地 提交于 2020-02-04 11:38:08
1、隐式转换(自动转换):变量里,存储的数据是什么类型,这个变量就是什么类型 var a = 10; a="1"; 2、显示转换(手动转换) 1)parseInt():将小括号中的内容,转换为Number类型,并返回 console.log(typeof a);//string console.log(typeof parseInt(a));//Number 2)String():将括号中的内容,转换为字符串,并返回 console.log(typeof String (10)); 3)prompt()输入框:返回的数据,默认是字符串类型,即使不是也会自动转换 var s = prompt("请输入一个数字'); console.log(typeof s) 来源: CSDN 作者: 前端小布丁 链接: https://blog.csdn.net/weixin_46191548/article/details/104143289

8.3题解

痴心易碎 提交于 2020-02-04 11:07:37
T1 [洛谷P3938] 题目很明显了,菲波那契,找规律无疑了,考场上的话,如果你对菲波那契足够敏感,那我想你是可以想到正解的,毕竟考场14个人AC,还算挺水的,如果实在想不出来,可以暴力打表找一下父亲,毕竟你是要不停的翻父亲,不管用什么方法吧,最后会发现$fa[x]=x-fib(x的出生月份-1)$,那我们再考虑一下对于$le12$的数据,他不停的翻父亲最多会翻多少遍,你会发现也就60遍,这个时候这道题就可做了,甚至不需要倍增,完全可以直接翻,但是由于你不知道深度,所以需要先把两个点分别翻一遍,找到深度,然后用类似于倍增$lca$的方法直接翻就可以了 1 #include<iostream> 2 #include<cstdio> 3 #include<set> 4 #define maxf 62 5 #define re register 6 #define ll long long 7 using namespace std; 8 const int L=1<<20|1; 9 char buffer[L],*S,*T; 10 #define getchar() ((S==T&&(T=(S=buffer)+fread(buffer,1,L,stdin),S==T))?EOF:*S++) 11 ll m; 12 ll f[maxf]; 13 set <ll> ccc; 14

js克隆一个对象

你说的曾经没有我的故事 提交于 2020-02-04 10:32:05
js克隆一个对象 我们知道,对象类型在赋值的过程中其实是复制了地址,所以如果改变了一方,其他都会被改变。我们应该如何克隆一个对象,并且避免这种现象的发生呢? 方法一:Object.assign function copy(obj){ return Object.assign({}, obj); } 方法二:…展开运算符 function copy(obj){ return { …obj }; } 方法一,方法二是浅拷贝,也就是当对象层级大于2层时,复制到的还是地址信息 let a = {age:1, jobs: {first:'FE’} } let b = copy(a) a.jobs.first =‘native' console.log(b.jobs.first)// native 方法三:JSON function copy(obj){ return JSON.parse(JSON.stringify( obj )); } 会忽略undefined,fn 不能序列化函数 不能解决循环引用的对象 方法四:MessageChannel function structuralClone(){ return new Promise(resolve =>{ const {port1,port2} = new MessageChannel() port2.onmessage = ev =

说说JSONP

青春壹個敷衍的年華 提交于 2020-02-04 08:27:18
1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准; 2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>); 3、于是可以判断,当前阶段如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理; 4、恰巧我们已经知道有一种叫做JSON的纯字符数据格式可以简洁的描述复杂数据,更妙的是JSON还被js原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据; 5、这样子解决方案就呼之欲出了,web客户端通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件(一般以JSON为后缀),显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的数据装入进去。 6、客户端在对JSON文件调用成功之后,也就获得了自己所需的数据,剩下的就是按照自己需求进行处理和展现了,这种获取远程数据的方式看起来非常像AJAX,但其实并不一样。 7、为了便于客户端使用数据,逐渐形成了一种非正式传输协议

JS 堆栈内存底层机制

心已入冬 提交于 2020-02-04 07:10:43
JS的生存环境在浏览器中,浏览器执行JS代码需要: 1.从电脑内存中分配出一块内存,用来执行代码,这就是栈内存。 2.分配一个主线程用来自上而下执行JS代码(JS实际上是单线程运行) 下面画一张图说明下堆栈底层操作: 来源: CSDN 作者: -小龙人 链接: https://blog.csdn.net/qq_36330228/article/details/104112692

js 作用域链

南楼画角 提交于 2020-02-04 06:51:37
作用域 :变量开始创建到被系统回收的过程; 全局 :在任意函数外创建的变量, 局部 :在任意函数内创建的变量, ES5 :只用函数能够生成局部作用域,其他结构不可以 作用域链 :现在当前作用域中查找,找到即执行,如果没有继续向上一次查找,找到即执行,如果找到全局中依然没有找到,报错,阻断程序运行。 var a = 20 ; function Myfun ( ) { a = 30 ; console . log ( a + 10 ) ; } function Myfun_two ( ) { a = 50 ; console . log ( a + 20 ) ; } console . log ( a ) ; //20 Myfun ( ) ; //40 console . log ( a ) ; //30 Myfun_two ( ) ; // 70 console . log ( a ) ; //50 变量提升 :如果使用了未声明的变量,正常情况会因找不到而报错,但是在使用下方出现了他的声明,会默认将他提升到使用之前,不包括值,先使用后声明,改变量会因变量提升可以找到,但是值为undefind; 存在意义:保证程序继续执行,只是失去了当前功能的值 //第一题 var a = "全局变量" ; function first ( ) { var a = "first" ; function

XSS中的同源策略和跨域问题

旧巷老猫 提交于 2020-02-04 06:38:28
转自 https://www.cnblogs.com/chaoyuehedy/p/5556557.html 1 同源策略 所谓同源策略,指的是浏览器对不同源的脚本或者文本的访问方式进行的限制。比如源a的js不能读取或设置引入的源b的元素属性。 那么先定义下什么是同源,所谓同源,就是指两个页面具有相同的协议,主机(也常说域名),端口,三个要素缺一不可。 可以看下面的几个示例来更加清楚的了解一下同源的概念: URL1 URL2 说明 是否允许通信 http://www.foo.com/js/a.js http://www.foo.com/js/b.js 协议、域名、端口都相同 允许 http://www.foo.com/js/a.js http://www.foo.com:8888/js/b.js 协议、域名相同,端口不同 不允许 https://www.foo.com/js/a.js http://www.foo.com/js/b.js 主机、域名相同,协议不同 不允许 http://www.foo.com/js/a.js http://www.bar.com/js/b.js 协议、端口相同,域名不同 不允许 http://www.foo.com/js/a.js http://foo.com/js/b.js 协议、端口相同,主域名相同,子域名不同 不允许

html调用带参数的自执行js的方法

橙三吉。 提交于 2020-02-04 04:43:36
JS部分 // 初始化一个弹出框 // 生成dom元素 // 插到页面中 // 显示 ( function ( window , document ) { let Msg = function ( options ) { this . _init ( options ) ; } Msg . prototype . _init = function ( { content = '' } ) { this . content = content ; this . _createElement ( ) ; this . _show ( this . _el ) ; } Msg . prototype . _createElement = function ( ) { let wrap = document . createElement ( 'div' ) ; wrap . className = 'msg__wrap' ; wrap . innerHTML = '\ <div class="msg-header">\ <span>确认删除</span>\ <span class="msg-header-close-button">×</span>\ </div>\ <div class="msg-body">\ <div class="msg-body-icon">\ <div

js图片轮播图

蹲街弑〆低调 提交于 2020-02-04 04:09:09
/*焦点图*/ var Box='.carousel';//盒子 var Menu=$(Box+' .l_cursor li');//圆点菜单 var Con=$(Box+' .carouselChange li');//大图 var Text=$(Box+' .text li');//图注文字 var Prev=$(Box+' .Prev');//上一页 var Next=$(Box+' .next');//下一页 var Counts=$(Con).size();//获取li总数 var nowIndex=0; var timer; /* 点击切换 */ $(Menu).click(function(){ var i=$(Menu).index(this) gotoPage(i); }); /* 打开相应的标签 */ function gotoPage(i){ $(Menu).removeClass("current").eq(i).addClass("current"); $(Con).fadeOut(200).eq(i).fadeIn(200); $(Text).hide().eq(i).fadeIn(200); nowIndex=i; }; /* 下一页 */ $(Next).click(function(){ gotoR(); }); function gotoR(){

js内置对象-Date对象

给你一囗甜甜゛ 提交于 2020-02-04 04:04:10
Date对象:   Data对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒)。 定义: //默认初始值定义: var dataName=new Date(); /*使用关键字new;Data首字母必须大写 使dataName成为对象,同时具有初始值:当前电脑系统时间*/ //自定义初始值定义: var dataName=naw Data(2016,5,25); //或者: var dataName=new Data('May 25,2016'); Data对象中,用来处理时间和日期的常用方法: 1.get/setData():返回/设置日期 1 var mydate=new Date();//当前时间2016年5月25日 2 document.write(mydate+"<br/>");//输出当前时间3 document.write(mydate.getFullYear()+"<br/>");//输出当前年份 4 mydate.setFullYear(16); //设置年份 5 document.write(mydate+"<br/>"); //输出年份被设定为 0016年6 document.write(mydate.getFullYear()+"<br/>");//输出当前年份注:不同浏览器格式不同Edge结果:Wed May 25 2016 21:53