JS 之 (一)入门篇

来源:互联网 发布:nba2k罗德曼数据 编辑:程序博客网 时间:2024/05/16 13:47

使用语法规范

① 在html代码里边引入js语言
<script  type=”text/javascript”>具体js代码</script><script  type=”text/javascriptsrc=”js文件”></script>
② 代码大小敏感

true/false
TRUE/FALSE

③ 结束符号
  • 每个简单语句使用”;”结束,与php类似
  • 在javascript里边,该分号不是必须,但是推荐使用
④ 注释

// 单行注释
/多行注释/

⑤ 变量
  • 其值可以发生改变的量就是变量。
  • 变量名字命名规则:
    • php里边:字母、数字、下划线组成,开始有$符号标志,数字不能作为开始内容
    • js里边:字母、数字、下划线、$符号、汉字 等5个组成部分,数字不能作为名字的开始内容。
⑥ 数据类型
  • php:int float string boolean array object null resource
  • javascript(6种): number(int/float) string boolean null undefined object
    (数组是对象的一部分)

    • null类型:空对象类型。
      这里写图片描述
      • var name = “”; //声明一个变量,后期要使用一个“字符串”进行赋值
      • var age = 0; //声明一个变量,后期要使用一个“数字”进行赋值
      • var obj = null; //声明一个变量,后期要使用一个“对象”进行赋值
    • undefined未定义类型
      使用一个没有声明的变量

    • object对象类型:window document

数值数据类型

1. 各种进制数表示

  • 十进制: var age = 23;
  • 八进制: var score = 023; 2*8+3=19的十进制数
  • 十六进制: var color = 0x25; 2*16+5=37的十进制数
    10:A 11:B 12:C 13:D 14:E 15:F
<script type='text/javascript'>//十进制数var age = 20;//alert(age);//document.write(age);console.log(age);//八进制数console.log(032);   //3*8+2=26console.log(0111);  //1*8*8+1*8+1=73console.log(059);   //59    够8没有进一,说明不是八进制数console.log(081);   //81//十六进制数console.log(0x24);  //2*16+4=36console.log(0xFD5); //15*16*16+13*16+5=4053</script>

2. 浮点数

//浮点数console.log(12.345);    //12.345console.log(0.87);      //0.87console.log(.87);       //0.87console.log(34.0);      //34//计算不准确console.log(0.1+0.2);   //0.30000000000000004

3. 最大数、最小数

  • 最大:Number.MAX_VALUE;
  • 最小:Number.MIN_VALUE;
//最大、最小数console.log(Number.MAX_VALUE);  //1.7976931348623157e+308   等于1.79*10的308次方console.log(Number.MIN_VALUE);  //5e-324                    等于5*10的-324次方

4. 无穷大的数

//无穷大的数console.log(Number.MAX_VALUE + Number.MAX_VALUE);   //Infinityconsole.log(10/0);                                  //Infinity

运算符

1. 算术运算符

//i++ 和 ++i 在没有赋值的时候没有区别 var age = 20;//age++;//++age;//console.log('age:' + age);    //21//i++ 和 ++i 有赋值的时候,区别如下//var age1 = age++;         //先返回值,再++console.log("age1:" + age); //20 - 21var age2 = ++age;           //先++,再返回值console.log('age2:' + age2);//21 - 21

2. 比较运算符

  • >
  • <
  • >=
  • <=
  • !=
  • !==
  • ==
  • ===

3. 逻辑运算符

&& 逻辑与

两边结果都为真,结果为真

|| 逻辑或

两边结果只要有一个为真,结果为真

!逻辑取非

真既假,假既真

注意点:

逻辑运算符最终结果

在php里边,最终结果是“布尔”结果
在javascript里边,&&和||是其中一个操作数,!是布尔结果

<script type="text/javascript">var a = 10;var b = 20;var c = 30;var name = "tom";var age = 23;var money = 0;//字符串和数值进行逻辑运算//期间它们要进行数据类型转换//0 "" array() null 等都被转换为false信息//&& 和 || 的结果是其中一个操作数console.log(name && age);//23 决定整体结果的操作数作为最终结果console.log(age && money);//0console.log(name || money);//tom console.log(a>5 && b>10);//true 是b>10的结果//!取非,最终结果是布尔console.log(!name);//falseconsole.log(!money);//true</script>
短路运算

只给执行一个操作数,不执行另一个操作数,不被执行的操作数就被短路。

var name = "tom";var age = 23;var money = 0;console.log(name || money);         //tom       money被name短路了console.log(money && age);          //0         age被money短路了console.log(name && alert(123));    //undefinedconsole.log(age || alert("hello")); //23        alert被age短路了

流程控制

顺序结构
分支选择结构:if elseif switch
循环结构:while() do{}while() for()

条件表达式switch用法

switch(){
 case 表达式:
  分支;
 case 表达式:
  分支;
}

<script type="text/javascript">    var age = 30;    switch(true){        case age >=1 && age <= 10:            console.log('儿童');            break;        case age >=10 && age <= 20:            console.log('青少年');            break;        case age >=20 && age <= 30:            console.log('青年');            break;        default:            console.log('壮年');            break;    }    switch(age){        case 10:            console.log('10岁');            break;        case 20:            console.log('20岁');            break;        case 30:            console.log('30岁');            break;        default:            console.log('老头');    }</script>

两个关键字break和continue

  • break:在循环、switch里边有使用
    跳出当前的本层循环
  • continue:在循环里边使用
    跳出本次循环,进入下次循环
多个循环嵌套使用:标志flag:for1    red:    for2        for3            break/continue;  //把for3给跳出 / 跳出本次的for3            //break  3;//php语法            break flag;   //continue flag;   把标志对应的for循环给做跳出操作            break red;    //continue red;

例:

var i = 1;    computer:    while(true){        i++;        switch(i){            case 5:                console.log(i);                break;            case 10:                console.log(i);                break;            case 15:                console.log(i);                break computer;//break 跳出 computer标记的while循环,避免死循环        }    }

函数

什么是函数

有一定功能代码体的集合。

函数的封装

传统方式

function 函数名(){}
该方式的函数有“预加载”过程,允许我们先调用函数、再声明函数
预加载:代码先把函数的声明放入内存。代码开起来是先调用、后声明,本质是先声明、后调用的。

函数先调用、后声明的条件是,全部代码在一个”<script>”标记里边。

<script type="text/javascript">    //1、传统方式声明函数    //每个script标记内容是独立编译、解释、运行的    //函数先调用、后声明的条件是,全部代码在一个”<script>”标记里边    getInfo();    function getInfo(){        console.log('hello');    }</script>

变量赋值方式声明函数(匿名函数使用)

var 函数名 = function(){}
该方式没有“预加载”,必须先声明、后调用。

    //2、变量赋值方式声明函数    var getName = function(){        console.log('tom');    }    getName();

函数的参数

function 函数名(形参1,形参2,形参3=’abc’){}
函数名(‘tom’,23,’beijing’);//传递实参信息

实参和形参的对应关系

没有默认值情况:
在php里边:实参的个数小于形参是不允许的
在javascript里边:实参与形参没有严格的对应关系

<script type="text/javascript">    //实参与形参没有严格的对应关系    function fl(name, age, addr){        console.log('个人信息:姓名' + name + ' 年龄' + age + ' 地址' + addr);    }    fl('tom',45,'usa');    fl('tom',45);    fl('tom');    fl();</script>

关键字arguments

function 函数名(){} //函数声明没有形参
函数名(实参,实参); //调用的时候有传递实参
利用arguments可以在函数里边接收实参信息。

<script type="text/javascript">    //arguments关键字    function fl(){        var len = arguments.length;        //以下代码使用arguments关键字体会重载效果        if(len == 0){            console.log('个人信息:');        }else if(len == 1){            console.log('个人信息:姓名' + arguments[0]);        }else if(len == 2){            console.log('个人信息:姓名' + arguments[0] + ' 年龄' + arguments[1]);        }else if(len == 3){            console.log('个人信息:姓名' + arguments[0] + ' 年龄' + arguments[1] + ' 地址' + arguments[2]);        }    }    fl();    fl('tom');    fl('tom',20);    fl('tom',20,'beijing');</script>

callee关键字

意思:在函数内部使用,代表当前函数的引用。
function f1(){
  xxxx具体执行代码
  arguments.callee(); //调用本函数(或者f1())
  //都可以使得本函数执行,我们选择callee,其可以降低代码的耦合度。
  xxxx执行代码
}
f1();
耦合:一处代码的修改会导致其他代码也要发生改变。
在程序项目里边要开发低耦合度的代码。

<script type="text/javascript">    //callee关键字    /*        求n的阶乘函数        n=n*(n-1)        3=3*2*1        2=2*1        1=1    */    function jiecheng(n){        if(n == 1){            return 1        }else{            return n*arguments.callee(n-1);//调用自身        }    }    console.log(jiecheng(5));//120    console.log(jiecheng(6));//720    var jc = jiecheng;//把jiecheng的引用传递给变量jc一份,使得jc也可以当作函数调用    jiecheng = null;//销毁jiecheng,避免后面的代码使用    console.log(jc(5));</script>

函数返回值

一个函数执行完毕需要返回具体的信息,使用return关键字返回信息。
在一定层度上看,全部的数据类型(数值、字符串、布尔、对象、null)信息都可以返回
return本身还可以结束函数的执行。

在函数内部返回一个函数出来。
在javascript里边,一切都是对象
在一个函数内部,可以声明数值、字符串、布尔、对象等局部变量信息,言外之意就还可以声明函数(函数内部还要嵌套函数),因为函数是对象,并且函数可以被return给返回出来。
这里写图片描述

这里写图片描述

函数调用

传统方式函数调用

函数名();

匿名函数自调用

(function(){})();

    //匿名函数自调用,好处:不会被同名变量污染    (function(){        console.log('hello');    })();    (function(addr){        console.log('地址:' + addr);    })('北京');

全局/局部变量

全局变量

  • php里边:① 函数外部声明的变量。
    ② 在函数内部也可以声明全局变量(函数调用之后起作用)
<?phpfunciton f1(){global  $title;$title = “php”;  }  f1();              echo  $title;
  • javascript里边:① 在函数外部声明的变量
    ② 函数内部不使用“var”声明的变量(函数调用之后起作用)

局部变量

  • php里边:在函数内部声明的变量
  • javascript里边:在函数内部声明的变量,变量前边有”var“关键字。

数组

什么是数组

有许多变量,它们的名称和数据类型都是一致的。

数组声明

var arr = [元素,元素,元素。。。];
var arr = new Array(元素,元素,元素。。。);
var arr = new Array(3);
arr[0] = 元素;
arr[1] = 元素;

<script type="text/javascript">    //在javascript里数组的下标就是数字,没有关联数组的说法    //如果一个数组的下标是“自定义”的(非数字),那么该元素就是对象的成员(非数组)    //声明    var color = ['red','blue','green'];    console.log(color);    console.log(color[0]);    //声明    var animal = new Array('tiger','wolf','dog');    console.log(animal);    console.log(animal[1]);    //声明    var food = new Array(3);    food[0] = 'bread';    food[1] = 'apple';    food[2] = 'milk';    food['yuanxiao'] = '元宵';    console.log(food);    //对象访问成员:对象名[成员名] 或 对象名.成员名    //数组访问元素:数组名[下标]    console.log(food[1]);    console.log(food.yuanxiao);    console.log(food['yuanxiao']);</script>

获取数组长度

数组名.length;

    //length可获得数组元素,最大数字下标加1的信息    //要想获得正确的数组元素个数,该数组下标必须为1、2、3。。规则连续的    var color = ['red','blue','green'];    color[3] = 'gold';    color['juse'] = 'juse';    color[10] = '10';    console.log(color.length);//11

数组遍历

沿着一定的顺序对数组内部的元素做一次切仅做一次访问,就是遍历。
for循环 遍历
for-in遍历

<script type="text/javascript">    var color = ['red','blue','green'];    color[3] = 'gold';    color['juse'] = 'juse';    color[10] = '10';    //为了遍历效果更好,下标最好是1、2、3。。规则连续的    //for(var i = 0; i < color.length; i++){    //  console.log('i : ' + color[i]);    //}    //推荐使用 for-in 方法    //for(var 下标变量 in 数组)    for(var k in color){        console.log( k + ' : ' + color[k]);    }</script>

数组常用方法

<script type="text/javascript">    //instanceof 判断对象是否是指定构造器实例化的    //Array 是数组对象的构造器    var color = ['red','blue','green'];    console.log(color instanceof Array);//true    console.log(color instanceof Date);//false    //push()/unshift() 给数组元素的“结尾/开始”追加元素    //pop()/shift() 把数组元素的“结尾/开始”元素给删除    color.push('pink','gold','orange');//追加多个元素    color.pop();    color.pop();    console.log(color);    //indexOf()/lastIndexOf() 在数组的“左边/右边”查找“第一次”出现的指定字符串的位置    //判断数组中是否出现指定的内容    var addr = new Array('beijing','shanghai','guangzhou','shenzhen');    console.log(addr.indexOf('shanghai'));//1    console.log(addr.lastIndexOf('shenzhen'));//3    console.log(addr.indexOf('baoding'));//-1 未找到</script>

字符串

在javascript里边,字符串可以调用一些成员。

<script type="text/javascript">    /*    javascript里普通字符串也可以调用成员方法,该事情在Php中是不可理喻的    原理:    js里一切都是对象    表面看是字符串的调用方法,本质不然,在js解释引擎内部是把字符串转化成一个“临时对象”,通过该对象进行方法的调用,输出调用结果,之后再把该临时对象销毁,给外部用户感觉就是字符串调用方法    */    var str = 'Hello World';//普通字符串声明    console.log(str.toUpperCase());//HELLO WORLD    var title = new String('javascript 学习');//通过实例化对象方式创建一个字符串    var title = new Array('javascript 学习');</script>

神奇的eval用法

  • eval() 接受一个字符串传参,将这个字符串作为代码在上下文环境中执行,并返回执行结果
<script type="text/javascript">    var a = 10;    var b = 20;    console.log(a+b);//30    console.log('a+b');//a+b    //'a+b'字符串通过eval当做表达式在上下文环境中运行运行    console.log(eval('a+b'));//30    console.log('alert(123)');//alert(123)    eval('alert(123456)');//有弹出框    //eval内部参数字符串必须符合javascript语法规则    //eval('alet("hello")');//Uncaught ReferenceError: alet is not defined    console.log(eval('a+c'));//Uncaught ReferenceError: c is not defined 变量c必须先声明,后使用    //作用:将传递的字符串当作表达式使用 </script>
0 0
原创粉丝点击