JavaScript 高级程序设计

来源:互联网 发布:tv软件市场 编辑:程序博客网 时间:2024/06/15 07:36
国庆整理资料时,发现刚开始入门前端时学习JS 的资料,打算以一个基础入门博客记录下来,有不写不对的多多指教;


先推荐些书籍给需要的童鞋


《JavaScript 高级程序设计.pdf》第三版


 《JavaScript权威指南(第六版).pdf》


《高性能javascript.pdf》


《JavaScript语言精粹---高清版.pdf》


《你不知道的JavaScript(上卷).pdf》


《你不知道的JavaScript(中卷).pdf》


回到目录
数据类型


ECMAScript 中数据类型分为基本数据类型,复杂数据类型也称为引用数据类型,即常说的对象;


基本数据类型是简单的数据段,包括 String、Number、Boolean、Null、Undefined。


引用数据类型是由一组无序的名值对组成 如 Object;


基本数据类型


1、Undefined 类型


 Undefined 类型只有一个值,即 undefined。以下情况的值会是 undefined
(1)变量被声明了,但没有赋值,默认值为undefined。
(2)调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
(5)未定义的变量使用typeof 返回undefined(严格模式下报错)。


1
2
3
4
5
6
7
8
9
10
11
<script>
    var a;
    console.log(a);//undefined
    function f(a, b, c) {
        console.log(c)//undefined
    }
    f(1, 2); //未传递的实参
 
    function fo(){}
    console.log(fo());//没有明确返回值,默认返回undefined
</script>
2、Null 类型


Null 只有一个值 null,null是javascript语言的关键字,它表示一个特殊值,常用来描述"空值",从逻辑角度来看,null 是一个空对象指针;通常要把一个变量来保存对象,那么最好将变量初始化为null;


[注意]null是空对象指针,而[]是空数组,{}是空对象,三者不相同;


null与undefined 都是表示无、不存在,那么为什么会同时存在呢?


1、一开始null像在Java、.net里一样,被当成一个对象。但是javascript的值分成原始类型和对象类型两大类,作者认为基本类型表示”无”的值最好不是对象。
2、javascript的最初版本没有包括错误处理机制,发生数据类型不匹配时,往往是自动转换类型或者默默地失败。作者认为如果null自动转为0,很不容易发现错误;


null 与undefined 区别又是什么呢?


目前来说,null和undefined基本是同义的,都是表示无,只是应用场景不太一样 如:


null表示"没有对象",即该处不应该有值。典型用法是:


作为函数的参数,表示该函数的参数不是对象。
作为对象原型链的终点。
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义/初始化。典型用法是:


变量被声明了,但没有赋值,默认值为undefined。
调用函数时,应该提供的参数没有提供,该参数等于undefined。
对象没有赋值的属性,该属性的值为undefined。
函数没有返回值时,默认返回undefined。
未定义的变量使用typeof 返回undefined(严格模式下报错)。
(typeof null) //返回object 误区


在 JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的。对象的类型标签是0。由于 null 被设计成空指针(大多数平台下值为0x00),因此,null的类型标签也成为了0,typeof null就错误的返回了"object".(referenc) 但是如果修复了 会造成大量旧的js不兼容;


该现象有待于在ECMAScript 6中被修复 (该提议已被否决). 正确的返回值将成为 typeof null === 'null'.


https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof 


3、Boolean 类型


Boolean 布尔类型有 true、false。在js中是区分大小写的,即 True、False 并不是Boolean的值,虽然Boolean 只有这两个值,但是在js中任何数据类型的值调用Boolean()函数,都能返回一个Boolean值;只要记住如下规则即可:(0,-0,NaN,'',null,undefined)这六个永远为false,其它都为true
<script>
    var message = 'ds';
    if (message) {
        console.log('成功'+message)// 成功ds
    }
    var obj={};
    if(obj){
        console.log('成功'+obj)// 成功[object Object]
    }
    var a=0;
    if(a){
        console.log('成功'+a);
    }else{
        console.log('失败'+a)// 失败0
    }
 
</script>
4、Number 类型


在js中使用Number 类型来表示整数与浮点数(数值必须包含一个小数点);


var intNum=66; //整数
var floatNum=1.1 //浮点数


如果某次计算的结果超出了Javascript 数值范围(Number.MAX_VALUE 最大值 Number.MIX_VALUE)那么这个结果就会自动转为Infinity,如果这个数值是负数会转为-Infinity(负无穷),如果是正数会转为Infinity(正无穷)


NaN:非数值(Not a Number)是一个特殊的值,表示这里本应该是一个数值,但是并不是数值; 如


1
2
var a=10,b='str';
   console.log(a*b);//NaN
NaN 具有如下特点:
1、任何与NaN的操作都是返回NaN;
2、NaN与任何值都不相等;  
<script>
    var a = 10, b = 'str';
    console.log(a * b);//NaN
 
    console.log(NaN == NaN)//false
    console.log(NaN === www.tianhengyl1.com NaN)//false
    console.log(NaN == 'www.yunduanpingtai.cn str')//false
</script>
针对NaN的两个特点,ECMAScript定义了 isNaN()函数来确定某个变量/表达式结果是不是NaN,这个函数会尝试把变量转换为数值,如果不能转换则返回true,反正返回false;  
<script>
 
    console.log(isNaN('red'));//true 不能转换number
    console.log(isNaN('10'));//false 能转换number
    console.log(isNaN(10));//false 能转换number
    console.log(isNaN(false));//false 能转换number
    console.log(isNaN(true));//false 能转换number
 
    console.log(isNaN(''));//false 能转换number  0
    console.log(isNaN(undefined));//true 不能转换number
    console.log(isNaN('undefined'));//true 不能转换number
    console.log(isNaN(null));//false 能转换number 0
    console.log(isNaN('null'));/www.078881.cn//true 不能转换number
     
</script>
typeof 基本数据类型检查


1
2
3
4
<script>
    var s = 'name';
    console.log(typeof s)//string
</script>
typeof                            返回以下字符串


undefined                      这个变量未定义、未初始化
object                            这个变量是对象或者是null
boolean                         这个变量是布尔值
number                          这个变量是数值
string                             这个变量是字符串
function                         这个变量是函数


回到目录
引用数据类型


引用类型是一种用于将数据和功能组织在一起的数据结构(也常被成为类),引用类型的值(对象)是引用类型的一个实例。但是js中没有类的概念,因此引用类型也可以被称为对象,因为他们描述的是属性和方法的集合;
ECMAScript提供了很多原生引用类型(如:Object)


Object类型


我们看到的大部分引用类型都是Object类型的实例,Object的实例本身不具备很多功能,但对于在应用程序中存储和传输数据而言,是非常理想的选择。


Array类型


除了Object之外,Array算是js最常用最常用的类型。js中的数组与其他语言的数组都是数据的有序列表,因为js是弱类型,所以js中数组的每一项可以保存任何类型的数据;


Date类型


js中用于构建日期对象的引用类型


RegExp类型


js通过RegExp类型来支持正则表达式


Function类型


js中的function实际上是对象,每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针;


引用类型提供的属性以及方法这里不在叙述,不知道的可以参考如下连接


http://www.w3school.com.cn/jsref/jsref_obj_array.asp


instanceof  检测某个实例的具体类型 


语法:


1
object instanceof constructor
描述:
instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
可以理解为 instanceof 用于判断某个实例(对象)是否是某个类型的实例;  
var a=new Array(chuangshi88.cn/);
alert(a instanceof Array);/www.rbuluoyl.cn/true,
alert(a instanceof Object)也会返回true;这是因为Array是object的子类。
 
再如:
function test(){};
var a=new test();
alert(a instanceof test)会返回true。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
越努力,越幸福...
分类: javaScript完整基础系列(es5)
标签: javascript 数据类型, 基本类型, 引用类型, javascript基础教程
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 社保小红本丢了怎么办 小红本丢了怎么办 孩子小红本丢了怎么办 小学素质报告册丢了怎么办 小学生素质报告册丢了怎么办 高中素质报告册丢了怎么办 小升初素质报告单丢了怎么办? 三供一业移交后社区管理职能怎么办 初中政治总考不好怎么办 孩子上初一学习越来越差怎么办 胸经过整容后变得胸闷怎么办? 网瘾高中不学习怎么办 犯罪人逃到美国怎么办 10岁儿童偏胖怎么办 土地面积与实际面积不符怎么办 军转进省直单位双选失败怎么办 房改房楼龄到了70年怎么办 商品房房改房到70年后怎么办 公务员未享受房改政策怎么办 两套房改房违规怎么办 法院保全的物品在我家怎么办 西瓜视频答题结束了钱没提现怎么办 诚信答题密码忘了怎么办 我未成年杀了人怎么办 错过了网课考试怎么办? 2018广东省普法考试0分怎么办 小孩错过了小升初的考试怎么办 错过了自主招生考试怎么办? 科目一考试错过了时间怎么办 中学生网瘾怎么办济南远大认真 u盘安装不了系统怎么办 对敏感脆弱的青春期孩子怎么办? 脸变得很交黑怎么办 玩手机长痘痘了怎么办 青少年左侧后背突发疼痛怎么办 纵欲过度导致青少年白发怎么办 20岁了不想长大怎么办 网吧老板跑路了怎么办 网吧玩地下城卡怎么办 个人公积金封存之前厂子欠费怎么办 学生欠了2万块怎么办