一些javascript题目
群里讨论过的题目,分享一下。
function test(){
var m=n=1;
alert(m);
}
alert(n);
//因为test函数没有执行,程度控制流不能进入进行解析,里面的东西对外面不可见,因此报错
function test(){
var m=n=1;
alert(m);
}
test();
alert(n);
//当test执行后,统统变成全局变量
function test() {
return 1
+2
}
alert(test())
类似的还有,由群里的abcd提供
function test() {
return 1
2
}
alert(test())
类似的还有,由群里的abcd提供
function test() {
return
2
}
alert(test())
类似的还有,由群里的abcd提供
function test() {
1
+2-
3
}
alert(test())
//考察JavaScript的EOS(分号)问题,注意操作符是否存在
上面这题也可以引出这么一题,由群里的abcd提供
function test() {
try {
return 1;
} finally {
return 2;
}
}
alert(test())
//一个函数执行后必定返回(return)一个结果,如果原函数体没有return语句必返回undefined。
//如果里面存在异常处理,finally块中的return 的优先级高于try 块中的return
alert(Number())
类似的还有,由群里的abcd提供
alert(+" 3 ")
//参见ECMA3-5th的第9.3节与15.7.1节。如果Number([value])的value不存在,则返回0
//一个字符串被执行了“+”,“-”等操作,相当于调用了Number(str),这时亦即相当于调用了toNumber函数
//这是一个内建函数,只存在于JS引擎中,对于这个str它会执行trim操作,再执行数字转换,
//如果能转换基本上转换为十进制(如0x12转为18),如果数字过大会使用指数,
//如果trim后得到的为Infinity,则直接转换它,如:
var a = +' Infinity ';
alert(typeof a) //number
//如果不能转换则返回NaN
var add = function(el){
alert(el === el+1)
}
//求el的值,让el === el+1成立!
//考察javascript的数值范围
add(Infinity)
add(Number.MAX_VALUE)
add(Number.POSITIVE_INFINITY)
add(Number.NEGATIVE_INFINITY)
alert([1,2,3,4,5][0..toString.length])
//0..相当于0.0.,这里不能直接写0.to
相关文档:
看书的时候遇到这样一个问题,程序代码如下
var ob = function(){
var obj = this;
function fn1(){
alert( obj === window );//false
alert( this === window );//ture
}
this.fn2 = function() {
fn1();
}
}
当时很不明白fn1里面第二个alert的结果,为 ......
这个随笔其实是为了感谢清风笑给的一个提示,不仅仅是告诉我怎么判断数组,更让我有了认真读一读 《javascript权威指南》的想法。
比较和拷贝其实是一回事,代码如下:
//
//Compare object function
//
function Compare(fobj,sobj)
{
var ftype = typ ......
作用域 Scope
Javascript 中的函数属于词法作用域,也就是说函数在它被定义时的作用域中运行而不是在被执行时的作用域内运行。这是犀牛书上的说法。但“定义时”和“执行(被调用)时”这两个东西有些人搞不清楚。简单来说,一个函数A在“定义时”就是 function A(){} 这个语句执行的时候就 ......
从这篇起,会由浅到深的分析js OO之写类方式,大概会有5-8篇。后面陆续会分析流行库(框架)的写类方式。为了讨论的单一性,暂不考虑类的继承,(私有,受保护)属性或方法。
EMCA262规范中没有类(class)的概念,js的new只是让他看起来更像c++,java一点。这里说的写类,只是书写js代码风格而已。
1、构造函数方式
/**
* P ......
<script language='javascript'>
function toggleAll(cb)
{
var val = cb.checked;
var frm = document.forms[0];
var len = frm.elements.length;
var i=0;
for( i=0 ; i<len ; i++)
&nb ......