Chinaunix首页 | 论坛 | 博客
  • 博客访问: 206092
  • 博文数量: 73
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 750
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-13 18:32
文章分类

全部博文(73)

文章存档

2009年(1)

2008年(72)

我的朋友

分类: 系统运维

2008-04-05 13:25:27

1,变量的类型规则
  javascript中变量是没有类型的:
    var i=45;
    i="hello abio";
  这样的代码在js中是正确的。
  变量的声明不是必须的(如i=4),但是有一个问题需要注意:
    在局部范围如函数中,使用未声明变量时js会自动将该变量转化为一个全局变量,即使你需要的是一个局部变量。
  var scope="globle";
  function checkScope(){
    scope="locale";
    document.write(scope);//写入locale
  }
  document.write(scope);//输出locale
  另外在js中函数的定义是可以嵌套在其他的函数中的,z作用域与变量作用域的处理是一致的。
  function func1{
    function func2(){...}
  }

2,没有块级作用域

functoin  test(o){
    var i=0;//整个函数中i都有定义
    if(typeof o=="object"){
        var j=0;//j不仅在快中有定义,在哪里都有定义
        for(var k=0;k<10;k++){//k不仅在循环中有定义,在哪里都有定义
            document.write(k);
        }
        document.write(k);//k仍旧有定义输出10
    }
    document.write(j);//j仍旧有定义,不过可能没有初始化
}

#注意以下的代码:
var scope="global"
function f(){
    alert(scope);//显示undefined,而不是global
    var scope="locale";//此处是初始化变量,不过它在哪里都有定义。
    alert(scope);//显示locale
}
f();
#以上代码相当于:
function f(){
    var scope;
    alert(scope);
    var scope="locale";
    alert(scope);//显示locale
}

3,未定义变量和未赋值变量
  var x;//未赋值变量。定义了变量,alert(x)输出为undefined
  alert(u);// 未声明变量。引发错误
  u=3;//给一个未声明变量赋值将定义该变量。

运算符
  1,运算数的类型
    在某些情况下,js会对运算数进行类型转化:
    “3”ד5”//这里会将字符串转换为数值,返回15
    不同的上下文环境运算符表达的意义不一样:
    3+4,“4”+“ strings”
  2,==.===
  ==
    对于数值,字符串,布尔值==比较的是值。
    而对于对象型别,==比较的是引用。
    注意:如果两个值得类型不同,则先将它们转换为相同的类型,然后再进行比较。
      ·如果一个是数字,一个是字符串,那么先将字符串转换为数字然后进行比较。
      ·如果一个值为true,先转换为1.若为false转换为0再进行比较。
      ·如果一个值是对象,而另一个值是字符串或者数字。那么先将对象转换为一个原始值(使用对象的toString或者valueOf方法)再进行比较。
      ·其它类型的组合不相等。
    eg:“1”==true(true转换为1,“1”转换为1.两者相等)。
  ===
  与==不同之处在于===计算两个值是否等同时事不考虑类型转换的。如“1”===true返回false
  两者还有相应的!=和!==运算符。

  字符串可以使用<,>,<=,>=来比较两者的大小。

  另外运算符还有delete,void,new,typeof等等。
阅读(1006) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~