var a;
c=new function(){var a=1;alert(typeof(a));};
alert(typeof(a));
结果为:number,undefined;
var a=1;
c=new function(){alert(typeof(a));var a=1;};
alert(typeof(a));
结果为:undefined,number;
var a;
c=new function(){alert(typeof(a));a=1;};
alert(typeof(a));
结果为:undefined,number;
var a;
c=new function(){var a=1;alert(typeof(a));};可以在c里面用this.a来访问全局变量a
============
说出它们的值
1、typeof(NaN) number、typeof(Infinity) number、typeof(null) object、typeof(undefined) undefined
2、NaN == NaN false
3、NaN != NaN true
4、NaN >= NaN false
5、null == undefined true
6、null >= undefined false
7、null <= undefined false
8、parseInt("123abc") 123
9、"123abc" - 0 NaN
10、Infinity > 10 true
11、Infinity > "abc" false
12、Infinity == NaN false
13、true == 1 ture
14、new String("abc") == "abc" true
15、new String("abc") === "abc" false 完全相同
关系运算符(<、>、<=、>=)
- 试图将 expression1 和 expression2 都转换为数字。
- 如果两表达式均为字符串,则按字典序进行字符串比较。
- 如果其中一个表达式为 NaN,返回 false。
- 负零等于正零。
- 负无穷小于包括其本身在内的任何数。
- 正无穷大于包括其本身在内的任何数。
相等运算符 (==、!=)
- 如果两表达式的类型不同,则试图将它们转换为字符串、数字或 Boolean 量。
- NaN 与包括其本身在内的任何值都不相等。
- 负零等于正零。
- null 与 null 和 undefined 相等。
- 相同的字符串、数值上相等的数字、相同的对象、相同的 Boolean 值或者(当类型不同时)能被强制转化为上述情况之一,均被认为是相等的。
- 其他比较均被认为是不相等的。
恒等运算符 (===、!==)
除了不进行类型转换,并且类型必须相同以外,这些运算符与相等运算符的作用是一样的。
说出它们的输出结果
1、
var a = "123abc";
alert(typeof(a++)); string,++运算符在typeof时候没有执行
alert(a); NaN
2、a是string类型
var a = "123abc";
a.valueOf = function(){return parseInt(a);}
alert(++a); NaN
alert(a-0); NaN
3、a是object类型
var a = new Object();
a.toString = function(){return "123abc";}
a.valueOf = function(){return parseInt(a);}
alert(++a);124
alert(a-0);124
4、
String.prototype.valueOf = function()
{
return parseFloat(this);
}
alert("123abc" > 122); false
alert(new String("123abc") > 122); true
5、
var s = new String("abc");
alert(typeof(s) == typeof("abc"));false
alert(s === "abc");false
alert(s.toString() == s);true
6、
var a = new Object();
a.toString = function(){return "a"};
var b = new Object();
b.toString = function(){return "b"};
alert(a>b);
a.valueOf = function(){return 1};
b.valueOf = function(){return 0};
alert(a>b);
7、
function step(a)
{
return function(x)
{
return x + a++;
}
}
var a = step(10);
var b = step(20);
alert(a(10));
alert(b(10));
我偶尔写js 角本的时候,对js 数据类型比较模糊,例如比较大小。
if(2 > 10)
{
alert("不正确!");
}
此比较不会是想要的结果:它相当于2 >1,把10的第一位取出来比较。
解决方 法:
if(eval(2) > eval(10))
{
alert("不正确!");
}
eval()函数用于在不引用任何特定对象的情况下计算代码字符串。