javascript学习笔记1

javascript是解释执行的客户端的基于对象和事件驱动的动态语言,解释型的语言并不需要对其进行编译,只是从上到下直接执行即可。

在js中,函数就是对象,例如可以向如下这样写代码,但是平时不常用

var test02 = new Function("a","b","alert(a+b);");

通过上面的代码还可以看出,函数里的形参可以不写var声明,因为js是弱类型,传进来的参数一定是var,所以可以不写

还可以向下面这样用函数,

var ttt = "chengyuan";

function test() {
        var aa="jubu";
        bb='weichengyuan';
        alert(aa);
    }
       function test2(){
        alert(ttt);
    }
    function test3(){
        var t1=true;
        var t2="true";
        if(t1==t2){
            alert("true");
        }else{
            
            alert("false");
        }
    }
    
    function test4(){
        alert("true"==1);
    }
    function test5(){
        alert(Number("true"));
    }
    function test6(param){
        param();
    }
</script>

</head>
<input type="button" value="test1" onclick="test();"/>
<input type="button" value="test2" onclick="test2();"/>
<input type="button" value="test3" onclick="test3();"/>
<input type="button" value="test4" onclick="test4();"/>
<input type="button" value="test5" onclick="test5();"/>
<input type="button" value="test6" onclick="test6(test2);"/>
<body>

  

test6()里传入的是函数的名字,然后在函数体内加上括号就可以执行这个方法。上面的其它方法也具有代表意义,可以看看。

上面的代码输出依次为


    image

image

image

image

image

image

不得不说的是NaN,他的意思是Number is not a Number,当将一个不能转为数字的js变量转为Number时,就会出现NaN类型,它是唯一一个自己不等于自己的类型,NaN类型也不可能等于别的类型的值。

js有6种类型,分别为string,object,Number,boolean,null,undefined,其中,null是undefined的衍生类;常用的有 String boolean Number。

可以通过typeof(变量名)来得到变量的类型。

“==”和“===”的差别:

==等值符  发生类型的自动转换
      ===等同符 不发生类型的自动转换,比较的时候先比较typeof的值
           进行比较的时候 String boolean Number
              类型相同
                         直接进行比较
              类型不同
                         发生类型转换,同时向Number靠拢,调用Number方法

用+进行两个类型相加时,遇到string类型的变量时整体全部变为string,这个与java语法很相近,但是需要明确指定的是javascript和java并没有任何关系。而且,js不支持重载,当有多个名字相同的函数时,这个函数实际上是最后一个相同名字的函数,前面的函数永远不会被执行,因为它们被覆盖了。

现在有一个function如下:

function test8(){
        alert(Number("123.345"));
        alert(parseInt("123.a45"));
        alert(parseFloat("123.a45"));
        alert(parseInt("a123.456"));
    }

  

输出的结果为:123.456

           123

           123

           NaN

这是因为对值进行解析的时候是从左边一位一位解析的,当遇到了不能解析的字符时就停止解析,所以第四个的结果刚刚解析就碰到了这个问题,故出现了NaN。

function test(a,b,c){

}

其中,test.length表示形参的个数。

arguments.length表示的是实参的个数,当某个形参的个数为3个时,可以向其传大于3个的实参,这时后面的参数将会被 无视,当向其传入2个实参时,alert时会出现NaN,因为第三个没有传入的实参被 自动的附于了undefined类型。

还有如下的情况,代码如下:

<a href="javascript:void(0);" onclick="test01();">test01</a>中"javascript:void(0);" 这个方法常用,用于将这个超连接指向当前页的当前位置。

<input type="button" value="一个事件两个方法" onclick="test01();test02();"/>

一个事件要两个方法的写法如上。

eval() 函数可计算某个字符串,并执行其中的 JavaScript 代码。

代码如下:

function test9(){
        var c="abcd";
        var a = "var b=c"
        eval(a);
        alert(b);
    }

  

输出结果为abcd
    

function test10(){
        var a ="[1,2,3,4,5,6]";
        eval("var dd = "+a);
        alert(dd[7]);
    }

  


    输出结果为undefined
   

 function test11(){
        var arr = "[1,2,3,4,5,6]";
        eval("var dd = "+arr);
        alert(dd[3]);
    }

  

输出结果为3

js定义数组:

var arr = new array();

或者var arr = [1,2,3,4];

或者var arr = new array(10);

需要注意的是,JS里面定义的数组的长度是可变的,这和java的数组是有区别的

原文地址:https://www.cnblogs.com/lilyjia/p/3867204.html