V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  autoxbc  ›  全部回复第 142 页 / 共 147 页
回复总数  2934
1 ... 134  135  136  137  138  139  140  141  142  143 ... 147  
2017-08-11 11:56:03 +08:00
回复了 retanoj 创建的主题 程序员 if(true)是个什么习惯?
比如产品说,这个到底怎么弄我还没想到,你的代码要体现出这种内心的纠结
2017-08-11 11:52:11 +08:00
回复了 retanoj 创建的主题 程序员 if(true)是个什么习惯?
代码是需求的流程化描述,如果需求本身是混沌的,代码强行清晰说明丢失了信息
2017-08-10 11:13:17 +08:00
回复了 autoxbc 创建的主题 V2EX 这才是 V2 评论的正确改造方式
@NoAnyLove #22 理论上用树形结构显示,不对超长对话流做隐藏处理,必然面临版面爆炸问题。

实际如我在 #21 的测试,推荐的那个脚本缩进足够谨慎,到 22 级仍然显示完美。

到这个 500 层长楼测试
https://www.v2ex.com/t/377051?p=1

注意要用 #12 那个脚本,里面包含合并多页评论的代码。实际我自己也写了合并代码,但是和自用库耦合较多,没有发出来。
很多人说楼主定义了 6 次 cleanTag 函数,我的回答也说这样有性能问题
刚测试了一下,这个说法需要修正

循环或者任何语句中的函数声明,并不像函数表达式一样被实际执行,即函数声明不参与流程控制。
函数表达式作为语句,参与流程控制,有性能开销;函数声明完全没有,哪怕其在一个循环中,使其形式上类似重复多次。或者在一个根本不会执行的流程分支中。

看这个代码

console.log( fun.toString() )
if(0)
{
function fun(){return 1}
}

// function fun(){return 1}

函数声明的实际流程是,在代码预解析时(词法分析,语法分析,AST 生成),由引擎将函数声明抽出,放入对应的作用域;在程序执行时,声明语句会被完全略过。

进一步猜测,只要作用域关系正确,函数声明可以写在代码的任何位置,而不产生副作用。
我觉得一句话提示可能不够说明问题

1. 不应该在循环内部定义函数,效率很差,要这么写
var cleanTag = function(i)
{
// doSomething
};
for(var i=1 ; i<7 ; i++ )
{
cleanTag(i);
}

2. 定义的函数并没有实际执行,没有传递参数

3. 如果希望函数获取外部的变量值(i),或者传递参数(实参),或者不定义形参,让函数内部代码在作用域链里查找

传递实参
(function(i){
// doSomething
})(i);

从作用域链中查找
var i;
(function(){
// doSomething with i
})();

4. 变量 x 存储的是 getElementById 的返回值,这是一个元素节点,就是你需要删除的节点,后面再赋值给 y 没有意义

5. removeChild 的参数是一个节点,不是数字或者索引值
删除 x 这么写
x.parentNode.removeChild(x);

需要达到题目中的目的,一般不用题目的做法,而是这样
[].slice.call( document.querySelectorAll('.content p') ).forEach(function(e){
if( e.textContent.trim() == '' )
e.parentNode.removeChild(e);
});

如果确实已经完成了添加 'clean' 标记,也可以这么写
[].slice.call( document.querySelectorAll('.content p[id^="clean"]') ).forEach(function(e){
e.parentNode.removeChild(e);
});

最后,楼主可能对自己的代码更亲切,按你的风格可以这样改
for(var i=1 ; i<7 ; i++ )
{
(function(i){
var x = document.getElementById("clean"+i);
if(x)
x.parentNode.removeChild(x);
})(i);
}

P.S. 虽然 js 给人一种上手就能写的感觉,不过如果已经写了几千行代码,最好找本书系统看一下,完全自己摸索会很快达到瓶颈。
2017-08-09 05:39:40 +08:00
回复了 strayuncle 创建的主题 Android 华为 magic 手机是如何黑掉微信的?
用户授权你拿数据

也要用合法的方法拿

修改安装包是逆向工程

控件里埋点是中间人攻击
2017-08-08 01:51:43 +08:00
回复了 chaleaoch 创建的主题 程序员 Python 程序员,最近想学学 js,从何处下手呢?
@ipwx #24 我觉得程序员的第二语言,是让他对第一语言重发现的过程,标准应该定的高一点。

有句话是这么说的,如果一门语言不能改变你思考的方式,那就不值得学。
2017-08-07 17:18:39 +08:00
回复了 chaleaoch 创建的主题 程序员 Python 程序员,最近想学学 js,从何处下手呢?
小红书过一遍才是正经
弄一堆 es 678 语法糖有啥用
原生不熟就开始用框架,把人往沟里推
2017-08-07 13:24:37 +08:00
回复了 amon 创建的主题 反馈 V2EX 是否有必要加个屏蔽关键词的功能
2017-08-07 12:10:26 +08:00
回复了 amon 创建的主题 反馈 V2EX 是否有必要加个屏蔽关键词的功能
@zhouxuchen #23 没关系,因为我有这段代码,你的脚本就被正确解析了

https://gist.github.com/anonymous/47e445b53374f6e91e6273164a80b583

另外其实可以 ajax 正文再匹配一下
2017-08-07 11:49:14 +08:00
回复了 amon 创建的主题 反馈 V2EX 是否有必要加个屏蔽关键词的功能
@caomu #19 我喜欢叫用户脚本,因为我不用油猴
2017-08-07 11:27:22 +08:00
回复了 amon 创建的主题 反馈 V2EX 是否有必要加个屏蔽关键词的功能
@paloalto #15 没用吧,我看大家发什么都发程序员节点
2017-08-07 11:16:17 +08:00
回复了 amon 创建的主题 反馈 V2EX 是否有必要加个屏蔽关键词的功能
从来不对网站提要求,要啥功能都自己写
已经对 V2EX 码了 330 行,加了 20 个小功能
@FanError #7 很多手环可以实现,不一定要 apple watch,我用的是 weloop now2。

不过有手表的话,再戴一个比较麻烦,我不戴表。
@RHFS #1
你需要一个带通知的手环,我手机既无铃音也无震动
开会也不用调手机模式,来电短信微信手环轻轻一震
甚至可以看来电短信的发起人,不重要的都不用掏手机
2017-08-07 01:29:56 +08:00
回复了 Gem 创建的主题 程序员 Firefox 下有没有好用的划词翻译插件吗?
插件或者脚本的问题在于,每个项目都有自己的事件监听
还有可能生成全局对象,个别的还扩展原型造成冲突

作为在意性能的用户,我的全部脚本共享一套事件监听
需要什么功能,预测一下代码量不大,就按需求写个极简版
因为可以纳入统一的处理流程,就算类似脚本叠加的再多
也不会影响系统的整体性能,最佳实践是自己写
我猜楼主想问的是那个自动生成的会员下拉菜单
插件叫 jQuery.textcomplete
调用就在 html 源码里,开头是 $("#reply_content").textcomplete
2017-08-06 11:13:49 +08:00
回复了 kmahyyg 创建的主题 宽带症候群 联通真是不行了,刚从联通离职,流量球就又来了!
白名单部分的代码不太好,也不抽象一下,还有尤达表达式
2017-08-06 03:59:05 +08:00
回复了 calpamomo 创建的主题 程序员 大家用什么中文字体?
#1 说的对,场景很重要,或者说设备本身很重要,dpi 不同,效果大不一样
对于高分屏(手机,4K 显示器),要用现代化的黑体,就是 思源(Noto),苹方一类
对于低分屏,分界点在 21px,小于等于 21px 的字号,首选雅黑;大于 21px,用现代化的黑体
1 ... 134  135  136  137  138  139  140  141  142  143 ... 147  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3693 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 50ms · UTC 04:52 · PVG 12:52 · LAX 21:52 · JFK 00:52
Developed with CodeLauncher
♥ Do have faith in what you're doing.