javasript基础

以前使用javascript的时候总是从网上找一些现成的例子,虽然能够解决一些问题,由于不了解原理,造成了代码效率的下降。当出现异常的时候,就是一个头两个大了。从今天开始,系统的学习一下javascript,不求称为javascript高手,但是至少让自己写出的代码不再那么弱智。

基础部分就不介绍javascript变量的命名规则,算术和逻辑运算符,三大控制语句(顺序,选择和循环)这种内容了,因为他和java,c以及其他的一些高级语言中的规定没有什么不同。因为这门语句就是参考c,java一类的语言发明出来的。由于这是一种嵌入式语言,所以必须运行在容器中,最常见的容器就是浏览器。

javascript是一种弱类型语言,定义的时候不需要指定数据类型,但是javascript却是有数据类型的。下面就先简单的看一下javascript中的数据类型吧。

javascript一共有六大数据类型undefined,null,object,string,number和boolean,看起来有一点点奇怪,怎么undefined和null怎么也是一种数据类型,其实我感觉这两个应该是数据值才对,但是,奇怪的javascript却把它们归结为一种数据类型。没有办法,就先将它们当做数据类型吧。下面我们就每一种数据类型做一些简单的介绍:

undefined:这种数据类型什么时候出现呢?当我们定义了一个非object变量,却没有赋值的时候,就会出现。因为javascript是弱类型的语言,在定义个时候不需要指定类型,如我们定义一个变量 var v_flag,这时候v_flag的类型就是undefined。我们使用表达式(typeof v_flag==undefined)获取的值是true。

null:说上面的undefined像一种数据类型,也可以过得去,但是null却怎么也不像一种数据类型了。举个例子说明更直白一下,如,定义两个变量var _flag=null,_flag2;大家想一下,这两个变量有没有区别?在高级语言如java中这两个定义好像没有什么区别,都是变量的值都是null。但是在javascript中,其中的区别就很大了,_flag2就不介绍了,类型就是undefined。但是_flag变量我们使用typeof检查类型的时候,却发现其变成了object。不是说javascript是弱类型语言吗,怎么有了类型了?其实我们就把null当成一种特殊的object类型就行了,因为我们使用typeof null返回的类型也是object。

上面这两种数据类型都比较特殊,可以作为变量的值出现在等号的右边,这也是javascript特性的一部分。当然这两种类型不存在类型转换的问题。

boolean:布尔值,这种类型的变量只有两个值true和false,其他数据类型和布尔值之间的转换是:undefined和null值对应false;string类型:空是false,非空是true;number类型:0是false,其他的是true;object比较特殊,先把它当成true就行了,因为空的object类型是nul。

number类型:包含整型和浮点型,虽然两个都被当做number类型,但是使用的格式标准是不一样,javascript根据变量的值智能的在这两种存储类型之间转换。javascript有一个特性:隐式的数据类型转换。如我们定义一个变量 var _num=1.0,这个javascript并不是把_num变量保存成浮点型,而是保存成整型数据。如果我们使用一个number类型和其他类型做减,乘,除这三种类型的运算,javascript总是隐式的把其他类型转换成number类型,如果不能转换,则返回一个值叫NaN(Not a Number),运算的结果也是NaN。但是加操作比较特殊,因为符号+不但是加法运算符,而且还是字符串链接运算符,所以在实际中要注意,有可能是把number类型转换成字符串。

string类型:这种类型就比较简单了,就是一个字符串,其他类型转换成字符串也比较简单,直接调用类型的toString方法就可以了,当然undefined和null例外。实在不行,就在变量后面加上一个空字串,如果_num+"";

object类型:这是一种非常灵活,可扩展,而且又非常难于理解的一种类型,这里不做详细的介绍。在扩展object类型之前,这个类型中有几个特别的方法和变量:construtor:构造器变量,这是一个指针,直接指向初始化该兑现的构造方法,使用这个变量可以实现复杂的逻辑和构造复杂的类型。hasOwnProperty(propName)用来判断该对象中是否存在某个属性名称。isPropertyEnummerable(propName)这个是用来判断对应中的属性是否可以使用in操作符来遍历(如 for(propName in object)。isPrototypeOf(object)用来判断这个对象是否是另一个对象的原型,原型是javascript中一个面向对象的核心概念,后面需要详细的学习,目前了解的也不是很多。

好了,类型就简单的介绍完了,当然每一种类型都不是这么简单,其中详细的细节在后面继续介绍

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值