JavaScript基础数据类型

js不同于python,是一门弱类型语言
静态类型语言
一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java 和 C 是静态类型语言。
动态类型语言
一种在运行期间才去确定数据类型的语言,与静态类型相反。VBScript 和 Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。
强类型语言
一种总是强制类型定义的语言。Java 和 Python 是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串去应用。
弱类型语言
一种类型可以被忽略的语言,与强类型相反。JS 是弱类型的。在JS中,可以将字符串 '12' 和整数 3 进行连接得到字符串'123',然后可以把它看成整数 123 ,所有这些都不需要任何的显示转换。
所以说 Python 既是动态类型语言 (因为它不使用显示数据类型声明),又是强类型语言 (因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)。
JavaScript 实现是由以下 3 个不同部分组成的:
核心(ECMAScript) 
文档对象模型(DOM) Document object model (整合js,css,html)
浏览器对象模型(BOM) Broswer object model(整合js和浏览器)
 
浏览器能够解释的:html css js
ECMAScript 描述了以下内容:
语法 
类型 
语句 
关键字 
保留字 
运算符 
对象 (封装 继承 多态) 基于对象的语言.使用对象.
 
一、js引入方式
 
1 直接编写
    <script>
        alert('hello yuan')
    </script>
2 导入文件
    <script src="hello.js"></script>
 
二、变量、常量、标识符
 
1、var 关键字声明, 默认以换行符作为分割语句
一行可以声明多个变量  var x=10,y=11,z=12;
2、声明变量时 可以不用var,如果不用var 那么它是全局变量
var s  声明了一个s
则在与var同层,或低于var层的(例如函数里)的s ,都是var声明的这个s
这点与python不同
例如
var s;
 
function a(){
    s=10
}
 
function b(){
    alert(s)
}
a();
b();     //弹出 10
 
3、变量首字符:字母,下划线,$美元符
 
三、js的数据类型
        number     -----  数值
        boolean    -----  布尔值
        string     -----  字符串
        undefined  -----  undefined
        null       -----   null
 
1、数字类型number
 
NaN:属于Number类型的一个特殊值,当遇到将字符串转成数字无效时,就会得到一个NaN数据
not a number
#1、不区分整型数值和浮点型数值;
#2、所有数字都采用64位浮点格式存储,相当于Java和C语言中的double格式
#3、能表示的最大值是±1.7976931348623157 x 10308,能表示的最小值是±5 x 10 -324
 
2、字符串类型string
由Unicode字符、数字、标点符号组成的序列
 
3、布尔类型boolean
true、false (小写)
 
4、Undefined类型
Undefined 类型只有一个值,即 undefined。
 
#1、当声明的变量未初始化时,该变量的默认值是 undefined。
#2、当函数无明确返回值时,返回的也是值 "undefined";
 
5、Null类型
只有一个值 null
用于表示尚未存在的对象
如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。
 
四、运算符
 
算术运算符:+   -    *    /     %       ++        --
比较运算符:>   >=   <    <=    !=    ==    ===   !==
逻辑运算符:&&   ||   !
赋值运算符:=  +=   -=  *=   /=
字符串运算符: +  连接,两边操作数有一个或两个是字符串就做连接运算
 
1、算术运算符
i++, i--
i++  先赋值,后自增
var i=10
ret=i++
此时i为11  ret为10
 
++i 先自增,后赋值
var i=10
ret=++i
此时i为11  ret为11
 
2、比较运算符
值 null 和 undefined 相等。
===全等号
!==非全等号
在检查相等性前,不执行类型转换。
例如:
123=="123"    True
123==="123"  False
 
注意1:
比较运算符两侧如果一个是数字类型,一个是其他类型,会将其类型转换成数字类型.
比较运算符两侧如果都是字符串类型,比较的是最高位的asc码,如果最高位相等,继续取第二位比较.
比较数字和字符串
var bResult = "25" < "3";
alert(bResult); //输出 "true"
上面这段代码比较的是字符串 "25" 和 "3"。两个运算数都是字符串,所以比较的是它们的字符代码("2" 的字符代码是 50,"3" 的字符代码是 51)。
 
var bResult = "25" < 3;
alert(bResult);  //输出 "false"
这里,字符串 "25" 将被转换成数字 25,然后与数字 3 进行比较
 
注意2:
等性运算符:执行类型转换的规则如下:
如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1。
如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字。
如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串。
如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字。
 
在比较时,该运算符还遵守下列规则:
值 null 和 undefined 相等。
在检查相等性时,不能把 null 和 undefined 转换成其他值。
如果某个运算数是 NaN,等号将返回 false,非等号将返回 true。
如果两个运算数都是对象,那么比较的是它们的引用值。如果两个运算数指向同一对象,那么等号返回 true,否则两个运算数不等
 
五、流程控制
 
顺序结构(从上向下顺序执行)
分支结构
循环结构:遍历循环,条件循环
 
1、分支结构
分支结构1:
if (表达式) {
    语句1;
}else if(表达式){
    语句2;
}else{
    语句3;
}
 
分支结构2:
switch比else if结构更加简洁清晰,使程序可读性更强,效率更高。
switch (表达式){
        case: 值1: 语句1;break;
        case: 值2: 语句2;break;
        case: 值3: 语句3;break;
        default: 语句3
}
 
 
2、循环结构
 
for循环
for(初始表达式;条件表达式;自增或自减){
            执行语句
    }
 
例如:
for (var i=0;i<10;i++){
    console.log(i);
}
 
备注:for循环另一种形式
for( 变量 in 数组或对象)
    {
        执行语句;
    }
 
例如:
for (var i in [11,22,33]){
            i  此时是索引值
       }
备注:.length 可以查看元素个数
 
while 循环:
while(条件){
    语句
}
 
3、异常处理
注:主动抛出异常 throw Error('xxxx')
try {
    //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
}
catch (e) {
    // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
    //e是一个局部变量,用来指向Error对象或者其他抛出的对象
}
finally {
     //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
}
 
 
posted @ 2017-11-12 20:53  唐宋元明卿  阅读(80)  评论(0)    收藏  举报