linux目录结构参考资料
之前一些日子可以说大部分与API打交道,这东西不是很伤脑筋,用勤奋可以达到熟练和熟悉的阶段。但对于数学系出身的我,刨根问底了解根源几乎是一个强迫症。
所幸公司里有个小伙子写过很多程序项目,而且又乐于分享知识。我能够多多发问获得很多知识。
我觉得程序这件事情需要深入研究的有这几样:
今天clone了趣分期移动端的网页,发现手机上显示的字体和PC端大概有1.2倍的视差,于是查看了相关的资料及做了测试。
首先有两个概念:DPI PPI这两个概念相信做移动端的朋友都有了解过。
PPI的不同,直接导致在不同屏幕上网页的缩放比例[前提是设置了width= device-width]。
摘录一段Mozilladeveloper的原话:
For web developers, this means that 320px be full width in portrait mode at scale=1, on all of the above-mentioned handheld devices, and they may size their layouts and images accordingly. But remember that not all mobile devices are the same width; you should also make sure that your pages work well in landscape mode, and on larger devices like the iPad and Android tablets.
糟糕,貌似截图不是很清晰。。。
大概的意思就是我做用iPhone4s做了个测试,ppi是114.82(用width 320px 算);电脑端是97.9,也是就说手机上看电脑上用px做的东西,将缩小114/97=1.18倍。
夜深了,睡了~毕竟程序员
关于Js的闭包问题,主要原理======内部函数可以访问定义它们的外部函数的变量和参数。
关于这一点首先要澄清:
jQuery.each( (“blur focus focusin focusout load resize scroll unload click dblclick “ +
“mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave “ +
“change select submit keydown keypress keyup error contextmenu”).split(“ “), function( i, name ) {
// Handle event binding
jQuery.fn[ name ] = function( data, fn ) {
return arguments.length > 0 ?
this.on( name, null, data, fn ) :
this.trigger( name );
};
});
类似$(document).click(console.log(hello)),实际上并没有将函数挂载成callback机制,不需要data,即可运行,因此控制台输出hello就结束了,事件没有绑定成功。
document.onclick=function(data){
console.log(data);
}
写到这,不得不赞叹下JS中存储数据的对象机制,完全的OOP模式有木有。
看样子JS这门语言还是很精妙的
主要机制
<script data-main=“js/app.js” src=“js/require.js”></script>
data-main主函数入口
本规范保留全局变量”define”以用来实现本规范。包额外信息异步定义编程接口是为将来的CommonJS API保留的。模块加载器不应在此函数添加额外的方法或属性。
本规范保留全局变量”require”被模块加载器使用。模块加载器可以在合适的情况下自由地使用该全局变量。它可以使用这个变量或添加任何属性以完成模块加载器的特定功能。它同样也可以选择完全不使用”require”。
在JavaScript当中存在大量的异步函数应用场景。尤其在操作DOM树的时候,挂载到相应事件的函数往往都是匿名函数(直接就是function(){});由于匿名函数一经调用立即执行的特性,函数体内部的变量并不分配独立的内存空间,而是指向当前函数体所在环境的变量引用。
例如FOR循环当中:
例子一:
var arr =[];
(function(){
for(var i= 0;i<5;i++){
arr[arr.length] = (function(i){
return function () {
return i
}
})(i)
}
})();
console.log(arr3)
如上所示的代码最后的结果是3,最后下滑线标注的return i所指向的内存地址是橙色变量开辟的。
例子二:
var arr =[];
(function(){
for(var i= 0;i<5;i++){
arr[arr.length] = (function(i){
return function (i) {
return i
}
})(i)
}
})();
console.log(arr3)
上例的结果是undefined;因为匿名函数中的参数i,创建了暂时的内存区域并没有赋值。
例子三:
var arr =[];
(function(){
for(var i= 0;i<5;i++){
arr[arr.length] = function(){
return function () {
return i
}
}
}
})();
console.log(arr3())
代码运行的结果是5。原因是函数运行结束后,由于匿名函数指向的变量i来自它所处的环境,本身匿名函数并没有新开辟存储空间,所以在循环结束后,return的i值依旧是5。
例子四:
闭包的另外一种形式,是显式的定义函数
var arr =[];
(function(){
var fun =function(j){
return j
}
for(var i= 0;i<5;i++){
arr[arr.length] = fun(i)
}
})();
console.log(arr[3])
代码运行结果是3,因为fun(i),形参开辟了临时内存存储变量i的值,而不是指向i的实际内存地址。
markdown在线编辑器 https://www.zybuluo.com/mdeditor