谈谈javaScript 

(杰我学习)

一. 什么是JavaScript

      人们通常所说的JavaScript,其正式名称为ECMAScript。这个标准由ECMA组织发展和维护。ECMA-262是正式的JavaScript标准。这个标准基于网景(Netscape)公司提出的JavaScript语言和微软提出的JScript语言。
JavaScript是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用这种语言的目的是:与Web客户交互作用,美化页面等。

二. JavaScript的特点

1.  JavaScript是一种脚本编程语言,也是一种解释性语言。
     2.  JavaScript的语法基本结构形式与C++、Java十分类似。
     3.  JavaScript是一种基于对象的语言。
     4.  JavaScript具有跨平台性。JavaScript是依赖于浏览器本身,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可正确执行。
     5.  安全性与简单性。

三.  JavaScript 和 Java 的区别

JavaScript和Java在语法上很类似,但其本质有着根本的区别。Java是一种比JavaScript更加复杂的程序语言,而JavaScript相对于Java来说,则是容易上手得多。
     二者完全没有关系,网景(Netscape)公司只是为了借着Java语言比较火的东风,将LiveScript语言更名成为了JavaScript语言。

四. JavaScript的优点与局限

优点:
   1.  使用JavaScript可以在客户端进行数据验证,节省服务器端的资源。
   2.  可以方便地操纵各种页面中的对象,使网页更加友好。
   3.  使多种任务仅在客户端就可以完成而不需要网络和服务器的参与,从而支持分布式的运算和处理。
   局限:
   1.  兼容性。互联网上有很多浏览器,如FireFox、Internet Explorer、Opera等,但各种浏览器支持JavaScript的程度是不一样的,所以各个浏览器运行JavaScript的效果会有一定的差距,有时甚至会显示不出来。
   2.  JavaScript不能打开、读写和保存用户计算机上的文件。
五. JavaScript的基本语法

在HTML中使用JavaScript

1.   使用<script>JS代码</script>标签
src属性  :表示包含要执行代码的外部文件。
type属性:text/javascript(可省略)
<script type=“text/javascript”>
    alert(‘hello,js’);
</script>
注意:当使用script标签的src属性时,script标签中一定不能放入任何JS代码。
例如:
    <script src=‘test.js’>
        之间不允许加入任何JS代码….
    </script>
注意:<script>标签可以放到html页面的任何地方。

2. 使用事件传入JavaScript代码
<div onclick=“alert(‘hello,js’)”></div>

3.  使用

<a href=“javascript:alert(‘hello,js’);”></a>

4.  区分大小写
变量、函数名和操作符——都区分大小写

5.标识符
a.第一个字符必须是一个字母、下划线或是一个美元符号
b.其他字符可以是字母、下划线、美元符号或是数字

6.注释
//……        单行注释
/*…*/        多行注释

7.语句
JavaScript中的语句以一个分号结尾,如果省略分号,则由解析器确定语句的结尾,一般情况下,换行会被当做一个语句的结尾。

8.变量
定义变量时要使用var操作符(注意var是一个关键字),后跟变量名称(一个标识符),如下所示:
var message;
也可以直接初始化变量或不使用var(但不推荐)
var message=‘hi’;    message=100;
注意:使用var操作符定义的变量将成为定义该变量的作用域中的局部变量。

9.变量
可以使用一条语句定义多个变量,只要像下面这样把每个变量用逗号分隔开即可:
var message=“hi”,
    found=false,
    age=100;

数值类型

1.浮点数值
所谓浮点数值,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位大于0的数字。
var num = 1.1;
var num = 0.1;
var num = .1;    //有效,但不推荐
如果小数点后面没有跟任何数字(如1.),可以作为整数值来保存。
如果浮点数值本身表示的就是一个整数(如1.0),该值会被转为整数。
可以使用e来表示科学计数法。
var num = 1.2e3;    //等于1200
浮点数值的最高精度是17位小数,但在进行算术计算时其精度远远不如整数。
注意:永远不要测试某个特定的浮点数的值!
例如:
    var a = 0.1;
    var b = 0.2;
    if(a+b == 0.3){
        alert(“输出了”);
    }
这里是不会弹出的!

2.数值范围
由于内存的限制,我们的JavaScript不能保存所有的数值。在大多数浏览器中,最小值是5e-324;最大值为1.7976931348623157e+308,如果某次的计算结果超出这个范围,那么这个值将自动转换为Infinity(正无穷)和-Infinity(负无穷);Infinity不是能够参与计算的数值,可以使用isFinite()函数来判断这个数值是不是无穷的。

3.NaN
NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。
例如:在其他语言中,任何数值除以0都会导致错误。但在JavaScript中,任何数值除以0会返回NaN,因此不会影响其他代码的运行。
NaN的特点:
(1).任何涉及NaN的操作,结果都为NaN
(2).NaN与任何值都不相等,包括NaN本身。例如:下面的代码会返回false
alert(NaN == NaN);
可以使用isNaN()函数来判断某一个值是否是NaN类型。

数值转换
我们可以使用三个函数Number()、parseInt()和parseFloat()将一个非数值转换为数值。
Number()函数的转换规则:
1.如果是布尔值,true和false将分别转换为1和0
2.如果是数字值,只是简单的传入和返回
3.如果是null,返回0
4.如果undefined,返回NaN
5.如果是字符串,遵循下列规则:
a.“11”会变成11,“011”会变成11
b.“1.1”会变成1.1
c.“0xf”会转换成相同大小的十进制整数值
d.  如果字符串是空的,则将其转换为0
e.  如果字符串包含除上述格式之外的字符,则将其转换成NaN

parseInt()的转换规则
1.忽略字符串前面的空格,直到找到第一个非空格字符
2.如果第一个字符不是数字或者是负号,返回NaN
3.空字符串,返回NaN
4.如果第一个字符是数字,会继续解析第二个字符,直到解析完所有后续字符或遇到了一个非数字字符。
5.如果字符串以0x开头且后面跟数字字符,就会将其转为16进制数,同样,八进制也一样。
parseFloat()也是从第一个字符开始解析每个字符,而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。规则如下:
1.第一个小数点是有效的,第二个小数点无效
2.始终忽略前面的0,不分进制数
3.十六进制会被转换成0
4.空字符串转换为NaN
3.布尔类型
布尔类型的字面值只有两个,true和false,可以使用Boolean()函数将一个非布尔类型转换为布尔类型。

复合数据类型
1.对象
对象其实就是一些数据的集合,这些数据可以是字符串型、数字型和布尔型,也可以是复合型。
2.数组
数组与对象一样,也是一些数据的集合,这些数据也可以是字符串型、数字型、布尔型、或者是复合型。与对象不同,数组中的数据并没有命名,不能通过名字来引用该数据。在数组中,为每个数据都编了一个号(从0开始),为数组的下标。

其他数据类型
1.函数
函数是一段可执行的JavaScript代码,在JavaScript中,函数可以带有0个或多个参数,也可以返回一个值或不返回值。
2.null
null是一个特殊的数据类型,其所代表的意思是“空”。需要注意,这个空并不代表是0或空字符串。null代表没有值,不是一个有效的数字、字符串、也不是数组、对象和函数,什么数据类型都不是。
3.undefined
undefined也是一个特殊的数据类型,只有定义了一个变量但没有为该变量赋值,使用了一个并未定义的变量、或者是使用了一个不存在的对象的属性时,JavaScript会返回undefined。

数据类型的转换

1.自动/隐式类型转换
所谓隐式类型转换,就是不需要程序员定义,JavaScript会自动将某一个类型的数据转换成另一个类型的数据。JavaScript隐式类型转换的规则:
将类型转换到环境中应该使用的类型。
例如:if(1){    //1会自动转换成true
        document.write(‘ok’);
    }
可以隐式类型转换的情况:
1.数字类型:在字符串环境下可以隐式转换为“数字”,在布尔环境下,可以隐式转换为true(非0数字,0为false)
2.非空字符串:在数字环境下,可以隐式转换为字符串中的数字或NaN;在布尔环境下,可以隐式转换为true。
3.空字符串:在数字环境下可以隐式转换为0;在布尔环境下可以隐式转换为false;
4.字符串”true“:在数字环境下可以隐式转换位1;布尔为true
5.字符串“false”:数字环境为0,布尔位false
6.null:在字符串环境下,转换为“null”;数字环境下,转换为0,布尔环境下,转为false
7.NaN:在字符串环境下可以隐式转换为“NaN”;布尔环境下,转换为false
8.undefined:字符串环境下,转换为“undefined”,数字环境下,转为NaN,布尔下,转为false
9.true:字符串转为“true”,数字环境下转为1
10.false:字符串转为“false”,数字环境下转为0

2.显式类型转换
在JavaScript中,可以使用Number()、Boolean()、String()函数来将数据类型转换成数字型、布尔型、字符串型
1.数字类型转换成字符串型,可以将其与一个空字符串相连。
var s = 123+””;
2.字符串型转换成数字型,可以将其减0
var s = “123”- 0;
3.字符串型或数字型转换成布尔型,可以使用两次!运算符
var s = “true”;    if(!!s){}

谈谈javaScript的更多相关文章

  1. 谈谈javascript中的prototype与继承

    谈谈javascript中的prototype与继承 今天想谈谈javascript中的prototype. 通常来说,javascript中的对象就是一个指向prototype的指针和一个自身的属性 ...

  2. 谈谈javascript的函数表达式及其应用

    我们都知道定义函数的方式有两种,一种是函数声明,另外一种就是函数表达式. 函数声明 语法为:function关键字后跟函数名.例如: function functionName(arg0) { //函 ...

  3. 简要谈谈javascript bind 方法

    最近去参加了场面试,跟面试官聊了很多JS基础上的东西,其中有个问题是谈谈对apply.call.bind的理解和区别.顿时一愣,apply.call我知道,经常用的东西,bind是什么鬼!!!好像见过 ...

  4. 谈谈javascript中的日期Date对象

    一.日期对象  在javascript中并没有日期型的数据类型,但是提供了一个日期对象可以操作日期和时间.  日期对象的创建:  new Date();二.将日期对象转换为字符串  将日期对象转换为字 ...

  5. 谈谈javascript放在哪里更合适

    关于javascript放在哪里更合适 脚本位置:  例如以下代码: <html> <head> <title>Script Example</title&g ...

  6. 谈谈javascript语法里一些难点问题(二)

    3)    作用域链相关的问题 作用域链是javascript语言里非常红的概念,很多学习和使用javascript语言的程序员都知道作用域链是理解javascript里很重要的一些概念的关键,这些概 ...

  7. 谈谈javascript语法里一些难点问题(一)

    1)    引子 前不久我建立的技术群里一位MM问了一个这样的问题,她贴出的代码如下所示: var a = 1; function hehe() { window.alert(a); var a = ...

  8. 谈谈JavaScript类型检测

      javascript内置的类型检测机制并非完全可靠.比如typeof操作符,并不能准确的判断数据是哪个类型,比如:数组和对象就不能通过typeof来区分. typeof [] ==="o ...

  9. 谈谈JavaScript MVC模式

    第一个是:没有使用mvc模式的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...

随机推荐

  1. spring-boot实战【01】:Hello World项目搭建

    原文:http://www.cnblogs.com/yucongblog/p/7355519.html 简介 在您第1次接触和学习Spring框架的时候,是否因为其繁杂的配置而退却了?在你第n次使用S ...

  2. Go语言 -- 获取命令行参数

    部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用flag库和os库.1.flag库的使用 Go语言标准库提供了用于快迅解析命令行参数的flag包 ...

  3. OpenGL之路(七)为立方体加入丰富色彩

    在立方体的六个面贴上不同的颜色,假设想达到混合颜色的效果,能够參照立方体的前面代码在每一行前都加上颜色 代码例如以下 #include <gl/glut.h> #pragma commen ...

  4. Solaris服务管理

    远程登录协议 telnet \ssh 等.当然我们可以查看谁登录过我的系统,以及可以利用ftp记录日志. 一.SMF: 服务管理工具 优点:自动恢复意外终止的服务,支持服务的依赖关系,一个服务可以有多 ...

  5. UVA 10042 Smith Numbers(数论)

    Smith Numbers Background While skimming his phone directory in 1982, Albert Wilansky, a mathematicia ...

  6. Redhat 6.2安装Oracle 11gclient及遇到的问题分析

    昨天在Redhat6.2(64 bit)上安装oracle 11.2.0.1.0 client(32 bit),下面是安装中碰到的一些问题及处理过程记录 首先解压缩安装包,会生成一个client文件夹 ...

  7. VS2010配置QT5.5.0开发环境

    一.官网下载QT和qtvsaddin插件 网址:http://www.qt.io/download-open-source/ 1. 2. 3. 得到下载的安装包,点击安装就能够了 watermark/ ...

  8. 监控系统-nagios

    Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设备,打印机等.在系统或服务状态异常发出邮件或短信报警第一 ...

  9. 使用sed来自动注释/恢复crontab中的一个任务

    # 注释crontab任务crontab -l  >  ${WORK_DIR}/cron_binarysed  -i 's%\(.*/home/xyz/xyz.sh\)%#\1%' ${WORK ...

  10. HUD 2031: 进制转换

    进制转换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...