javascript是运行在客户端的一种脚本语言,通过浏览器执行。

1.基本知识:

1.1 词法结构

1.1.1 字符集

javascript程序是用Unicode字符集编写的。

1.1.2 区分大小写

javascript是区分大小写的语言。也即是关键字、变量、函数名和所有的标识符都必须采取一致的大小写形式。

在javascript代码中,一些事情如onclick和onmouse必须按要求书写成小写的形式。

1.2 直接量

所谓直接量(literal),就是程序中直接使用的数据值,如:

100 //数字

3.1415 //小数

“Hello World" 、'Hello World'         //字符串语文本

true   、 false //布尔值

/javascript/gi   //正则表达式直接量(用作模式匹配)

{name:'liming',age:18} //对象

[12,45,76,'www',true] //数组 注意数组的元素可以是不同的类型,这一点与其它高级语言有所区别

 1.3 可选的分号

javascript使用分号将语句分隔开。缺少分隔符,一条语句的结束就成了下一条语句的开始。反之也是如此,如果语句各自独占一行,通常可以省略

但在一行表示多个语句时,必须要在每一条语句之后添加分号,如:

另外还有一种比较保守的做法是每次在语句前面加上一个分号,这样不管前面做了什么操作,比如误删除了分号,也不会对后面的语句有影响:

数据类型:

1.类型分析:

js中的数据类型有undefined,boolean,number,string,null,object等6种,前5种为基础类型,后为引用类型。

注意:(1)以上例子说明,typeof操作符的操作数可以是变量,也可以是数值字面量。

   typeof是一个操作符,而不是一个函数,所以例子中的圆括号可以使用,但不是必需的。

     (2)调用 typeof null返回的是 “Object” ,因为特殊值null被认为是空的对象引用。

1.4 类型、值和变量

   能够表示并操作的值的类型称做数据类型,编程语言最基本的特性就是能够支持多种数据类型

javascript中有两个特殊的原始值:null(空)和undefined(未定义),它既不是数字、字符串和布尔值。它们通常分别代表了各自特殊类型的唯一成员。

javascript的类型可以分为原始类型和对象类型,也可分为可以拥有方法的类型和不能拥有方法的类型,同样可分为可变类型和不可变类型,可变类型的值是可修改的,对象和数组属于可变类型:javascript程序可以更改对象属性值和数组元素的值。数字、布尔值、null和undefine属于不可变类型。

javascript变量是无类型的,变量可以被赋予任何类型的值,同样一个变量也可以重新赋予不同类型的值。使用var关键字来声明变量。javascript采用词法作用域(lexical scoping).不在任何函数内声明的变量称做全局变量。它在javascript程序中的任何地方都是可见的,在函数内声明的变量具有函数作用域(function scope),并且只有函数内可见。

重点1:js中undefined,null,NaN的区别:

null是javascript语言的关键字,它表示一个特殊值,常用来描述“空值”。对null执行typeof预算,结果返回字符串“object”,也就是说,可以将null认为是一个特殊的对象值,含义是”非对象“,但实际上,通常认为null是它自有类型的唯一一个成员,它可以表示数字、字符串和对象是“无值”的。

javascript还有第二个值来表示值来表示值的空缺。用未定义的值表示更深层次的“空值”。它是变量的一种取值,表明变量没有初始化,如果要查询对象属性或数组元素的值时返回undefined则说明这个属性或元素不存在。如果函数没有返回任何值,则返回undefined。引用没有提供实参的函数形参的值也只会得到undefined.undefined是预定义的全局变量(它和null不一样,经不是关键字),它的值 就是“未定义".

如图所示:

从上面的代码和运行结果中可以看出未定义的值和定义未赋值的为undefined,null是一种特殊的object,NaN是一种特殊的number。

Null类型

  null类型的数据只有一个值,就是null,null值表示一个空对象的指针,当用typeof操作符检测null时,会返回“object”。

重点2:js中undefined,null,NaN的运算比较:

从上面的代码可以得出结论:(1)undefined与null是相等;(2)NaN与任何值都不相等,与自己也不相等。

如果定义的变量是准备来保存对象的,最好将该变量初始化为null而是不其他的值。实际上undefined值是派生自null值的,因此ECMA-262规定它们的相等性测试要返回true。

注意:

  尽管null和undefined有这样的关系,但是它们的用途是完全不同的。我们知道,在一般情况下,都没有必要把一个变量的值显式地设置为undefined,但是null却不同,只要意在保存对象的变量还有真正保存对象,就应该明确地让该变量保存为null值。

  这样做不仅可以体现null作为空对象指针的惯例,也有助于进一步区分null和undefined。

Null 数据类型
在 Jscript 中数据类型 null 只有一个值:null。关键字 null 不能用作函数或变量的名称。 包含 null 的变量包含“无值”或“无对象”。换句话说,该变量没有保存有效的数、字符串、boolean、数组或对象。可以通过给一个变量赋 null 值来清除变量的内容。 请注意,在 Jscript 中,null 与 0 不相等(与在 C 和 C++ 中不同)。同时应该指出的是,Jscript中 typeof 运算符将报告 null 值为 Object 类型,而非类型 null。这点潜在的混淆是为了向下兼容。 Undefined 数据类型
如下情况使返回 undefined 值: 对象属性不存在,
声明了变量但从未赋值。
注意不能通过与 undefined 做比较来测试一个变量是否存在,虽然可以检查它的类型是否为“undefined”。在以下的代码范例中,假设程序员想测试是否已经声明变量 x : // 这种方法不起作用
if (x == undefined)
    // 作某些操作
// 这个方法同样不起作用- 必须检查
// 字符串 "undefined"
if (typeof(x) == undefined)
    // 作某些操作
// 这个方法有效
if (typeof(x) == "undefined")
    // 作某些操作
考虑将 undefined 值与null做比较。 someObject.prop == null;
如下情况时,比较的结果为 true, 如果属性 someObject.prop 包含 null 值,
如果属性 someObject.prop 不存在。
要检查一个对象属性是否存在,可以使用新的 in 运算符:
if ("prop" in someObject)
// someObject 有属性 ’prop’ 在JavaScript中,null与undefined一度使人迷惑。下面的分析,有利于你更清晰的认知它(或者让你更迷惑): - null是关键字;undefined是Global对象的一个属性 - null是对象(空对象, 没有任何属性和方法);undefined是undefined类型的值。试试下面的代码:        document.writeln(typeof null); //return object
       document.writeln(typeof undefined); //return undefined - 对象模型中,所有的对象都是Object或其子类的实例,但null对象例外:
       document.writeln(null instanceof Object); //return false - null“等值(==)”于undefined,但不“全等值(===)”于undefined:
       document.writeln(null == undefined); //return true
       document.writeln(null === undefined); //return false - 运算时null与undefined都可以被类型转换为false,但不等值于false:
       document.writeln(!null, !undefined); //return true,true
       document.writeln(null==false); //return false
       document.writeln(undefined==false); //return false
数据类型判断方法:typeof();

从图中可以看到,引用类型实际上只有object一种类型,a8 = null表示a8是一个空对象,而不是Null类型;

												

javascript学习第一课的更多相关文章

  1. Magento学习第一课——目录结构介绍

    Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...

  2. Elasticsearch7.X 入门学习第一课笔记----基本概念

    原文:Elasticsearch7.X 入门学习第一课笔记----基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...

  3. MFC学习-第一课 MFC运行机制

    最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...

  4. javascript学习第一天

    从大学第一次接触到JavaScript,到现在一直是个软肋,之前也是学习过一遍,但是缺乏系统学习,基础不牢,那么今天开始从基础部分学起来,今天是第一天,每天至少要保证效率,也要保证学习质量. 恩,要按 ...

  5. python学习第一课要点记录

    写在要点之前的一段话,留给将来的自己:第一次参加编程的培训班,很兴奋很激动,之前都是自己在网上找免费的视频来看,然后跟着写一些课程中的代码,都是照着模子写,没有自己过多的思考.感觉这样学不好,除了多写 ...

  6. python学习第一课

    第一课: 1.不要使用来路不明的软件 2.下载杀毒软件 3.不懂技术的人在技术人面前会显得愈发无知 4.python无所不能 需要掌握的知识: 1.python基本语法 2.文件处理 3.函数 4.模 ...

  7. JavaScript学习第一篇

    在学习之前让我们了解了解JavaScript的由来 Javascript是一种web技术,最初起名叫LiveScript,它是Netscape开发出来一种脚本语言,其目的是为了扩展基本的Html的功能 ...

  8. Kotlin学习第一课:从对比Java开始

    1. 介绍 今年初,甲骨文再次对谷歌所谓的安卓侵权使用Java提起诉讼,要求后者赔偿高达90亿美元.随后便传出谷歌因此计划将主力语言切换到苹果主导的Swift,不过这事后来没了跟进. 但谷歌在这两天的 ...

  9. Asp.net MVC4高级编程学习笔记-视图学习第一课20171009

    首先解释下:本文只是对Asp.net MVC4高级编程这本书学习记录的学习笔记,书本内容感觉挺简单的,但学习容易忘记,因此在边看的同时边作下了笔记,可能其它朋友看的话没有情境和逻辑顺序还请谅解! 一. ...

随机推荐

  1. Android总结篇系列:Activity生命周期

    Android官方文档和其他不少资料都对Activity生命周期进行了详细介绍,在结合资料和项目开发过程中遇到的问题,本文将对Activity生命周期进行一次总结. Activity是由Activit ...

  2. windows server2012 r2 上IIS8.5

    一时间不知道怎么开头了,直接上图吧! 开始时慢慢记录, 我记得第一次登陆到windows server 2012 r2 服务器时,有一些激动,兴奋,但马上就陷入不知所措的局面,之前完全没 了解过 se ...

  3. Xamarin.Forms介绍

    On May 28, 2014, Xamarin introduced Xamarin.Forms, which allows you to write user-interface code tha ...

  4. 1.注册或登录页面设计:UILabel,UIButton,UITextField

    学习iOS开发已经有一段时日了,之前一直没有系统的对iOS开发的相关知识进行归纳总结,导致很多知识点云里雾里在脑子里形不成iOS开发的思想,现将自己在学习过程中遇到的一些知识进行总结,希望能对iOS初 ...

  5. 命令别名alias设置

    <转:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_3.php> 命令别名配置: alias, unalias 命令别名是一个很有趣的东 ...

  6. 使用jQuery清空file文件域的解决方案(转)

    对一个文件域(input type=file)使用了验证后,我们总会希望把文件域中的值给清空了,在IE中,由于安全设置的原因,是不允许更改文件域的值的(也就是不能使用val("") ...

  7. Linux6(5)安装Oracle Rac11g

    1.创建用户组.以root身份运行以下命令:/usr/sbin/groupadd -g 501 oinstall /usr/sbin/groupadd -g 502 dba /usr/sbin/gro ...

  8. XE6移动开发环境搭建之IOS篇(2):安装VM9虚拟机(有图有真相)

    网上能找到的关于Delphi XE系列的移动开发环境的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.安装VM9英文原 ...

  9. 【Android 系统开发】Android JNI/NDK (三) 之 JNIEnv 解析

    jni.h文件 : 了解 JNI 需要配合 jni.h 文件, jni.h 是 Google NDK 中的一个文件, 位置是 $/Android-ndk-r9d/platforms/android-1 ...

  10. Python 前端之JQuery

    查找: 选择器 筛选器 操作: CSS 属性 文本 事件: 优化 扩展: Form表单验证 Ajax: 偷偷发请求 www.php100.com/manual/jquery http://blog.j ...