设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5181|回复: 8
打印 上一主题 下一主题

[搬运汉化] 【搬运】Javascript常见陷阱

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
119 小时
注册时间
2015-1-5
帖子
139
跳转到指定楼层
1
发表于 2016-1-25 08:53:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 MonsterJohnCN 于 2016-1-25 08:57 编辑



Javascript中的陷阱大集合



函数和操作符:
- 双等号
- parseInt不把10作为数字基数
- 字符串替换
- “+"操作符会执行相加操作和字符串连接操作
- typeof
- instanceof
- eval
- with

类型和构造函数:
- 使用“new”关键字构造内置类型
- 使用“new”关键字来构造任何东西
- 没有Integer类型

作用域:
- 没有块作用域
- 全局变量
- “this”和内部函数

杂项:
- 数据不存在:“null”和“undefined”
- 重定义undefined
- 可选的分号
- NaN
- arguments对象



{:8_459:}但愿这个文档能够拯救BUG海中的猴子们……

评分

参与人数 2梦石 +1 +1 收起 理由
574656549 + 1 塞糖
余烬之中 + 1 塞糖

查看全部评分

实力跳票,根本停不下来…… | bgpCore.js | 《下一站》2号DEMO | 插件开发无限延期中……正在研制适用性更强的普适模板,不再输出单体插件……

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
2
发表于 2016-1-25 09:10:22 | 只看该作者
看起来很有用
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
386 小时
注册时间
2007-7-27
帖子
4106

开拓者

3
发表于 2016-1-25 12:46:20 手机端发表。 | 只看该作者
本帖最后由 trentswd 于 2016-1-25 12:54 编辑

那么问题来了,不用eval用什么呢?又不是都是用来解析json

查了一下,说可以用字符串构造function,有空试试
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
119 小时
注册时间
2015-1-5
帖子
139
4
 楼主| 发表于 2016-1-25 13:08:24 | 只看该作者
trentswd 发表于 2016-1-25 12:46
那么问题来了,不用eval用什么呢?又不是都是用来解析json

查了一下,说可以用字符串构造function,有空试 ...

这里提到的东西也会有片面的,我自己也用eval.apply这类方式来动态处理一些东西。
陷阱只是发出来供参考,实际使用总得有自己的判断
实力跳票,根本停不下来…… | bgpCore.js | 《下一站》2号DEMO | 插件开发无限延期中……正在研制适用性更强的普适模板,不再输出单体插件……
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

5
发表于 2016-1-25 14:28:11 | 只看该作者
trentswd 发表于 2016-1-25 12:46
那么问题来了,不用eval用什么呢?又不是都是用来解析json

查了一下,说可以用字符串构造function,有空试 ...


最重要的是要避免eval外部来的、不受信任的代码

自己写的技能公式和事件脚本什么的 eval 是没什么大问题的
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
386 小时
注册时间
2007-7-27
帖子
4106

开拓者

6
发表于 2016-1-25 15:31:43 手机端发表。 | 只看该作者
taroxd 发表于 2016-1-25 14:28
最重要的是要避免eval外部来的、不受信任的代码

自己写的技能公式和事件脚本什么的 eval 是没什么大问题 ...

它是说eval慢
想到我用eval来算窗口坐标,几乎每帧都要eval,有点方
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
386 小时
注册时间
2007-7-27
帖子
4106

开拓者

7
发表于 2016-1-25 15:48:35 手机端发表。 | 只看该作者
测试了一下,chrome下new Function比eval还慢
现在的js引擎对eval都有缓存,所以应该不用担心这个问题了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
119 小时
注册时间
2015-1-5
帖子
139
8
 楼主| 发表于 2016-1-25 15:53:21 | 只看该作者
trentswd 发表于 2016-1-25 15:48
测试了一下,chrome下new Function比eval还慢
现在的js引擎对eval都有缓存,所以应该不用担心这个问题了… ...

何必为了0.0001秒的时间纠结1000秒
实力跳票,根本停不下来…… | bgpCore.js | 《下一站》2号DEMO | 插件开发无限延期中……正在研制适用性更强的普适模板,不再输出单体插件……
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

9
发表于 2016-1-25 19:23:51 | 只看该作者
trentswd 发表于 2016-1-25 15:31
它是说eval慢
想到我用eval来算窗口坐标,几乎每帧都要eval,有点方

那你把计算的公式用 new Function 保存下来,每帧调用一遍就是了

new Function 虽然慢,但至少是一次性的,之后调用函数是不慢的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-23 16:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表