JavaScript基础——ECMAScript的基础概念

1.ECMAScript中的基本数据类型包括undefined、Null、Boolean、Number和String;

2.与其他语言不同,ECMAScript没有为整数和浮点数值分别定义不同的数据类型,Number类型可表示所有数值;

3.ECMAScript中也有一种复杂的数据类型,即Object类型,该类型是这门语言中所有对象的基础类型;

4.严格模式为这门语言中容易出错的地方施加了限制;

5.ECMAScript提供了很对与C及其他类C语言中相同的基本操作符,包括算数操作符、布尔操作符、关系操作符、相等操作符及赋值操作符等;

6.ECMAScript从其他语言借鉴了很多流控制语句,例如if语句、for语句和switch语句等。

7.ECMAScript中的函数与其他语言中的函数有这多不同之处:

1)无须指定函数的返回值,因为任何ECMAScript函数都可以在任何时候返回任何值;

   2)实际上,未指定返回值的函数返回的是一个特殊的undefined值;

   3)ECMAScript中也没有函数签名的概念,因为其函数参数是以一个包含零或多个值的数组的形式传递的;

   4)可以向ECMAScript函数传递任意数量的参数,并且可以通过arguments对象来访问这些参数;

   5)由于不存在函数签名的特性,ECMAScript函数不能重载。

function cl(x){
    console.log(x);
}
/**
 * 3.4 数据类型
 */
var message;
cl(message);            //=>undefined
cl(typeof message);     //=>undefined
cl(typeof age);         //=>undefined

var car=null;
cl(typeof car);         //=>object
cl(null==undefined);    //=>true

var message="hello world";
//Boolean()函数将对象转换为Boolean值
var messageAsBoolean=Boolean(message);
cl(messageAsBoolean);   //=>true
if(message){
    cl("Value is true");
}

var floatNum=3.125e7;   //等于31250000
var result=Number.MAX_VALUE+Number.MAX_VALUE;
// isFinite()函数判断一个数值是不是有穷的
cl(isFinite(result));   //=>false
cl(NaN==NaN);           //=>false

//isNaN()确定这个参数是否"不是数值"
cl(isNaN("10"));        //=>false
cl(isNaN("blue"));      //=>true
cl(isNaN(true));        //=>false

//Number()、parseInt()、parseFloat()将参数转换为数值
var num1=Number("Hello world!");    //NaN
var num2=Number("");                //0
var num3=Number("00011");           //11
var num4=Number(true);              //1
var num5=parseInt("1234blue");      //1234
var num6=parseInt("");              //NaN
var num7=parseInt("0xA");           //10
var num8=parseInt("0xA",10);        //0
var num9=parseInt(22.5);            //22
var num10=parseInt("070",8);        //56
var num11=parseFloat("0xA");        //0
cl(num8);

//toString() 转换为字符串
var age=11;
var ageAsString=age.toString();     //"11"
var num=10;
cl(num.toString(8));                //"12"
//String()函数,将任何类型的值转换为字符串
var value1=true;
var value2=null;
var value3;
cl(String(value1));         //"true"
cl(String(value2));         //"null"
cl(String(value3));         //"undefined"

/**
 * 3.5操作符
 */

//3.5.1.1一元操作符:递增递减
var s1="2";
var s2="z";
var b=false;
var f=1.1;
var o={
    valueOf:function(){
        return -1;
    }
};
s1++;       //数值3
s2++;       //NaN
b++;        //数值1
f--;        //数值0.10000000000000009
o--;        //数值-2
cl(o);
//3.5.1.2 一元加和减操作符:可用作转换数据类型
var s1="01";
var s2="1.1";
var s3="z";
var b=false;
var f=1.1;
var o={
    valueOf:function(){
        return -1;
    }
};
s1=+s1;     //数值1
s2=+s2;     //数值1.1
s3=+s3;     //NaN
b=+b;       //数值0
f=+f;       //数值1.1
o=+o;       //数值-1

//3.5.2位操作符
//按位非 NOT(~) :数值的反码:操作符的负值减1.
var num1=25;
var num2=~num1;
cl(num2);   //=>-26
//按位与 AND(&) :两个都是1时才返回1,否则为0
var result=25 & 3;
cl(result);     //=>1
//按位或 OR(|):两个都是0时才返回0,否则为1
var result=25|3;
cl(result); //=>27
//按位异或 XOR(^) :只有一个1时才返回1,否则返回0
var result=25^3;
cl(result); //=>26
//左移(<<): 向左移指定的位数,以0补充空位
var oldValue=2;
var newValue=oldValue<<5;   //=>64
//有符号的右移(>>):向右移指定的位数,以符号位的值补充空位
var oldValue=64;
var newValue=oldValue>>5;   //=>2
//无符号右移 (>>>):向右移指定的位数,以0补充空位
var oldValue=-64;
var newValue=oldValue>>>5;  //=>134217726

//3.5.3 布尔运算符
//逻辑非(!)
cl(!"");    //=>true
cl(!0);     //=>true
cl(!!12);   //=>true
//逻辑与(&&)
var found=false;
//var result=found && someUndefinedVariable;
cl(result);     //=>flase
//逻辑或(||)
var found=true;
//var result=found && someUndefinedVariable;
cl(result);     //=>true
//var myObject =preferredObject || backupObject;

//3.5.4 乘性操作符 * / %
//3.5.5 加性操作符 + -
var result1=5+"5";  //=>"55"
var result2=5-"5";  //=>0
//3.5.6 关系运算符   > < <= >=
var result="Brick".toLowerCase()<"alphabet".toLowerCase();  //=>false
var result="23"<"3";    //=>true
var result="23"<3;      //=>false
var result=NaN<3;       //=>false
var result=NaN>=3;      //=>false
//3.5.7 相等操作符 == != === !==
//3.5.8 条件操作符
var max=(num1>num2) ? num1:num2;
//3.5.9 赋值操作符 = +=等
//3.5.10 逗号操作符
var num=(5,1,4,8,0);    //=>0
//3.6 语句
//3.6.1 if-else语句
//3.6.2 do-while语句
//3.6.3 while语句
//3.6.4 for语句
//3.6.5 for-in语句
for(var proName in window){
    document.write(proName);
    document.write("<br/>");
}
//3.6.6 label语句
//start:for(var i=0;i<count;i++){
//    cl(i);
//}
// 3.6.7 break 和continue语句
// 3.6.8 with语句
with(location){
    var qs=search.substring(1);
    var hostName=hostname;
    var url=href;
}
// 3.6.9 switch语句

// 3.7.1 理解参数
function doAdd(){
    var result=0;
    for(var i=0;i<arguments.length;i++){
        result+=arguments[i];
    }
    return result;
}
cl(doAdd(5000));  //=>5000
cl(doAdd(5000,6000));   //=>11000
//3.7.2 没有重载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值