谈谈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. 自定义PropertyGrid控件【转】

    自定义PropertyGrid控件 这篇随笔其实是从别人博客上载录的.感觉很有价值,整理了一下放在了我自己的博客上,希望原作者不要介意. 可自定义PropertyGrid控件的属性.也可将属性名称显示 ...

  2. py3处理数据库

    处理mysql使用 pymysql模块 import pymysql conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passw ...

  3. 网站的根目录下有一个文件robots.txt ,它是啥?

    我相信很多人有过这个疑问,这个robots文件是干嘛的? 我想问,各位搜索淘宝时,是否发现(禁止爬虫抓取提供快页) 关于详细语法,请看:http://zhidao.baidu.com/question ...

  4. bootstrap3分页

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  5. best-time-to-buy-and-sell-stock系列——先买入后卖出股票的最大值

    1. Say you have an array for which the i th element is the price of a given stock on day  i . If you ...

  6. Android—一次清除所有Activity

    首先,自定义一个ActivityManager管理类,用于管理栈中的Activity public class ActivityManager{ private static final String ...

  7. C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi

    C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...

  8. Java依照List内存储的对象的某个字段进行排序

    关键点:将List内存储的对象实现Comparable类.重写它的compareTo()方法就可以 Bean: package chc; public class StuVo implements C ...

  9. STL之set具体解释(二)

    首先来看看set集合容器: set集合容器实现了红黑树的平衡二叉树数据结构.在插入元素时它会自己主动调整二叉树的排列,把该元素放到适当的位置,而且 保证左右子树平衡.平衡二叉检索树採用中序遍历算法. ...

  10. c语言知识点总结-------静态区、堆、栈、常量区等

    在C语言中地址占4个字节 1.编程语言发展 低级语言----->高级语言 机器语言 ---> 汇编---->高级语言(C语言.C++.JAVA等) 机器语言 :0101 0010 1 ...