(3)undefined
undefined返回undefined。
typeof undefined // "undefined"
利用这一点,typeof可以用来检查一个没有声明的变量,而不报错。
function isUndefined(para) {
return typeof(para) == "undefined";
};alert(isUndefined(undefined));
函数的参数要么省略,被省略的参数的值就变为undefined。
没有办法只省略靠前的参数,而保留靠后的参数。如果一定要省略靠前的参数,只有显式传入undefined。
function f(a,b){ return a; } f(,1) // error f(undefined,1) // undefined
@羽商宫: 是不是可以这么理解,
isUndefined(para) 这个函数传递的不是para这个对象,而是para的值,
但获取para的值时,因为para未定义所以报错了
@2727551894: JavaScript的函数参数传递方式是传值传递(passes by value),这意味着,在函数体内修改参数值,不会影响到函数外部。需要十分注意的是,虽然参数本身是传值传递,但是对于复合类型的变量来说,属性值是传址传递(pass by reference),也就是说,属性值是通过地址读取的。所以在函数体内修改复合类型变量的属性值,会影响到函数外部。
很明显的 传的参数没有定义啊
typeof(para) == "undefined" 中para 未定义 所以 typeof(para)=undefined 所以不会报错,isUndefined(para)未定义para的话 貌似根本进不了方法中 function 的参数不能为 undefined ,你可以加一个默认值试试
1楼正解,
alert(typeof(para) == "undefined"); // 这个是类型测试,typeof是可以测试未定义的变量的。
alert(isUndefined(para)); // 这个是方法调用,人家方法要求有个参数,但你传的这个para未定义,未定就不会有值(连默认值都么有),没有值怎么充当实参,方法自然就不允许被调用了,于是乎报个错吧!
3楼讲了一点undefined的使用挺好
这个是由于typeof的特殊性造成的,typeof测试变量不关心是否定义。然而在函数调用中,是在使用一个未定义的值,导致报错。
因为第一个para被包含在了typeof里,
第二个para却放在了isUndefined的参数里。
typeof可以接受 undefined 类型,但是自定义的isUndefined方法不能接受
直接使用if(para){}