無標題文檔

Javascript 每日测试 - 第二期

这回是 小马 同学出的题目:

var a = parseInt('01');
alert(a == 1); //true
var b = parseInt('09/04/2008');
alert(b == 9); //?

请问第二个会弹出 true 还是 false ?

首先是 沈冲 同学的回答:

如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现
把其后的字符解析为八进制或十六进制的数字。

佩玉 同学就更牛了,直接转贴了 Javascript 犀牛书上的内容:

parseInt( ) parses and returns the first number (with an optional leading
minus sign) that occurs in s. Parsing stops, and the value is returned, 
when parseInt( ) encounters a character in s that is not a valid digit for
the specified radix. If s does not begin with a number that parseInt( ) can
parse, the function returns the not-a-number value NaN. Use the isNaN( ) 
function to test for this return value.

总结,parseInt 其实有两个参数( 详细 ):

parseInt(string[, radix])

所以当第一个参数遇到 0 开头的字符时,会自动使用 8 进制解析数字,而 9 不是 8 进制里合法的数字,所以返回 0 。所以要在 parseInt 函数中数指定进制(也就是第二个参数),才能得到期望的结果。

为了代码的健壮性,建议使用 parseInt 时总是指定第二个参数 -- 小马。

--EOF--

Javascript 每日测试 - 第一期

天气越发炎热,中午搞个小测试给大家提神还是不错的。这次是 玉伯 兄弟出的题目:

请确认下述语句

alert(String.indexOf);
delete String.indexOf;
alert(String.indexOf);     
alert(String.length);    
String.prototype = null;
delete String.split;
delete String.prototype;
alert(String.prototype.split);
alert(String.split);

每个 alert 都会输出什么?

粗看这道题目考的是 prototype 原型以及 delete 操作符的用法,于是很快就写出了答案

alert(String.indexOf);  => function () {...}
...
alert(String.indexOf);   => undefined
...
alert(String.prototype.split); => function () {...}
alert(String.split); => undeinfed

有关 delete 操作符的描述,可以参见 Mozilla 的 相关文档

ECMAScript 为元素的属性定义了 4 种特性,它们分别是 ReadOnly、DontEnum、DontDelete、Internal ,这在平时用户级别的 Javascript 是无法更改的(来源)。(但 undefined 和 NaN 却是可读写的,这个是有点莫名其妙 -- form 小马)。

回到上面的问题,对于

alert(String.length);

输出 1 (不好意思作弊了)这个现象非常难以理解。小马 同学(再次感谢)做出了如下的解释,整理如下:

String 事实上是一个 function,是个所谓的构造器函数,可
用 typeof String 来验证。那么 function 的 length 属性,
它的值就是这个构造器函数在声明时的参数的数量。

详细可以 参考这里 。那么这样就很容易理解 alert(String.length) 为什么是 1 了 -- 因为它就提供了一个参数( 来源 )。

--EOF--

夏天避暑注意事项

杭州一天比一天(一年比一年)热, 期前虽有在杭州五六年的居住的经验 ,但是感觉还是非常的难熬。下面,分享下本人对于避暑方面的经验(幼齿同学请在家长的陪同下观看)。

https://friable.rocks/_/2009_11_05/815025a6f7b4.jpg

首先,当然是上班时间尽量呆在公司 -- 每个 人道的公司 应该都提供有空调;如果是踩点下班的同学,可以酌情考虑去超市(如有女友结伴更佳,可享受钱包被洗礼的那种苍 凉 感)。

https://friable.rocks/_/2009_11_05/482505b5776b.jpg

千万注意食品卫生,尤其是那些自动售货机吐出来的物品。无论如何,当你吃完自认为美味的食品以后,看见包装上的保质期后有种呕吐感的话,那就太悲惨了。

https://friable.rocks/_/2009_11_05/146485a6f7b7.jpg

随时准备洗漱用品,比如沐浴液 -- 虽然我们做不到唐伯虎那样,「顺便洗了个澡并换了套衣服」。当然,能有机会让女同胞闻到你迷人的沐浴露的味道的话,效果更佳。

https://friable.rocks/_/2009_11_05/741545c4671d.jpg

男同胞(不限女性)如果觉得自非常有魅力的话,可以尝试将头发剪短,使其更符合空气动力学。当然,需要酌情考虑,特别是在打算在周末剪头发的同学,需要考虑下自己是否有过犯·罪前科。

https://friable.rocks/_/2009_11_05/772415bc7ab7.jpg

古话有云,「心静自然凉」。当你感到天气真的炎热难耐,建议看会书(技术方面的更佳)。 某人 说的话非常经典,书是最好的催眠工具 -- 在其伟大思想的领导下,本人屡试不爽。

https://friable.rocks/_/2009_11_05/327075a6bdb8.jpg

如果还是难以入睡,建议「强制」自己敲键盘。当然,对于那些越敲越有劲的同学慎用此招 -- 本人在经过多次的努力以后,已经开始决定放弃此修炼方法。

--EOF--

最近服务器似乎碰到些问题,给大家造成困扰深表抱歉, wiLdGoose 兄 正在努力的解决。大家如有如何疑问,可以联系其详细咨询技术问题(相信女性会更优先)。

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章