JavaScript之基本概念

     13年的时候就买了《JavaScript 高级程序设计 》(第3版)和Jquery的书,平时偶尔也看一两眼,没系统的看,今年定下的目标是学习web,所以打算系统的学习一下。写下JavaScript系列的博客也算是笔记,以后好复习。内容也是按照《JavaScript 高级程序设计 》(第3版)的顺序总结,今天总结javascript的一些基本概念。

     1.区分大小写(这个不用解释)

     2.命名规则

         一般用字母、数字、下划线或美元$符号。第一个字符必须是字母、下划线或美元符号$.

     3.语句

        语句结尾可以省略分号,但为了让编码易读,减少错误,尽量加上分号。

     4.变量

        变量是松散类型,可以保存任何类型的数据。声明变量尽量用var来声明,否则变量就会变成全局变量。同时不能定义名为eval和arguments的变量,否则会导致语法错误。

     5.数据类型

       主要包括5种基本数据类型 :Undefined、Null、Boolean、Number 和String。还有一个复杂数据类型:Object.

       1).Undefined类型

           只有一个值undefined,在使用var声明变量但未对其进行初始化,则该变量的值就为undefined。即定义变量的默认值是undefined.

       2).Null类型

          它也只有一个值null,它表示一个空对象指针,如果变量用来保存对象,最好将变量初始化为null。这样只要坚持这个变量是否为null值就能判断变量是否被保存对象的引用。

      3).Boolean类型

          这个略。

      4).Number类型

         这里主要是有两个内容:NaN和数值转换。

         1.NaN:非数值,表示要返回数值的操作数未返回数值的情况。比如X/0=NaN。

           它主要有两个地方比较特殊:1.任何涉及NaN的操作都返回NaN。2.Nan与任何值(包括NaN)都不相等。那如何判断一个值是不是非数值呢?这里有一个函数isNaN(),传入一个任意类型的参数,如果不能被转化为数值则返回true。

         2.数值转换

            主要有3个函数:Number()、parseInt()、parseFloat(). 后两个主要是用来把字符串转数值。

            Number()转换规则:

            如果是Boolean值,ture变1,false变0;

            如果是数字,简单传入传出;

            如果null,返回0;

            如果是undefined,返回NaN;

            如果是字符串:

               1.只包含数字(包括前面带正号、负号):转为10进制数,前面的0去掉 如:"011"变为11;

               2.包含有效浮点数,转为浮点数

               3.有效十六进制转为同等大小的十进制

               4.字符串是空,转为0

               5.如果包含除上述以上格式的字符串,则转为NaN

               6.如果是对象,则调用对象的valueOf(),依照前面规则转换返回的值,如果转换结果为NaN,则调用对象的tostring(),然后按照前面的规则转换。

        5).String类型

             字符串是不可变的,一但创建,值不会改变。要改变首先销毁原来的字符串,然后用新的变量填充。

             字符串转换是常用的有两种方法:tostring()、String().但null、undefined没有。

             数值、布尔值、字符串都有tostring()方法。多数情况不需要传递参数,在调用数值的tostring()方法时,可以传递一个参数:输出数值的基数,默认是10进制.

       6).Object类型

           对象可以通过new操作符创建,可以为其添加属性和方法来自定义对象。

           Object的每个实例都有以下属性和方法:

           Constructor :保存着用于创建当前对象的函数。构造函数。

           hasOwnProperty(propertyName) :用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。作为参数的属性名必须以字符串形式指定。

           isPrototypeOf(object):用于检查传入的对象是否是另一个对象的原型。

           propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。也是要用字符串指定参数。     

           toLoacleString():返回对象的字符串表示。

           tostring():返回对象的字符串表示。

           valueof():返回对象的字符串、数值或布尔值表示。

     6.typeof操作符

        由于是松散类型,因此需要有一个方法检测给定变量的数据类型typeof.对一个值使用typeof操作符可能返回下列某个字符串:

        "undefined" :未定义

        "boolean"    :布尔值

        "string"       :字符串

        "number"    :数值

        "object"      :对象或null

        "function"   :函数

      7.操作符           

         1)、递增递减操作符

               1.对于字符串来说能转数字的转数字然后进行加减操作

               2.对于布尔值,转为0、1在加减操作

               3.浮点直接加减

               4.对于对象先valueof()或tostring()在进行前面的加减操作。

        2)、一元加、减

              +放在数值前面没影响。对于非数值时,按照number()转换规则。

       3)、布尔操作符(与、或、非)

               1. 逻辑非操作符先将操作数转为布尔值再对其求反。

                    逻辑非转换成布尔值的规则:若操作数为对象、非空字符串、非0数值则转为true,其他为false。

               2.逻辑与

                  (1)对于布尔值,逻辑与是非常简单的,只要有一个false,就返回false;

                 (2)对于不是布尔值的情况则:

                         如果第一个操作数是对象,则返回第二个数

                         如果第二个操作数是对象,则只有在第一个操作数的求值结果为true的情况下才会返回该对象;

                         如果第两个操作数都是对象,则返回第二个数操作数 

                         如果有一个操作数是null,则返回null

                         如果有一个操作数是NaN,则返回第NaN

                         如果第一个操作数是undefined,则返回unfined

                   (3)对于逻辑与的短路问题:           

<script type="text/javascript">
var found=true;
var result=(found && someUdefinedVariable);
alert(result);//显示someUdefinedVariable
//例子中的found为true,所以会对someUdefinedVariable继续求值,但是该变量未定义,所以会提示错误
  </script>

<script type="text/javascript">
var found=false;
var result=(found && someUdefinedVariable);
alert(result);//显示false
  //例子中的found为false,所以第一个操作数就已经能够决定结果,就不会在对第二个操作数求值
  </script>

       3.逻辑或(||)

                     (1)对于布尔值,逻辑或是非常简单的,只要有一个true,就返回true;

                     (2)对于不是布尔值的情况则:

                               如果第一个操作数是对象,则返第一个操作数

                               如果第一个操作数的求值结果为false,则返回第二个操作数

                               如果两个操作数都是对象,则返回第一个操作数

                               如果两个操作数是null,则返回null

                               如果两个操作数是NaN,则返回NaN

                               如果两个操作数是undefined,则返回undefined 

<script type="text/javascript">
   var found=true;
   var result=(found || someUdefinedVariable);
    alert(result);//弹出true
  //对于逻辑与,当一个为true的时候,就不会在对第二个操作数进行求职了
  </script>

 7.函数

在学习Node.js中看到函数这块,就把js中的函数也复习一下。函数在各个编程语言中都会存在。在Js中的函数和C#、Java这些还是有区别的。

一、函数

1.Js中用function来声明函数.

2.函数定义不必指定返回值。任何函数在任何时候都可以通过return后跟要返回的值来实现返回值。推荐的做法是要么都有返回值要么都没有返回值。

3.不能将函数、参数命名为eval和arguments,同时不能出现两个命名参数同名的情况。

二、参数

1.js中函数不介意传递多少个参数以及参数的数据类型。之所以会这样,是因为js中的参数在内部是用一个数组来表示的,函数接收的始终是这个数组。实际上在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数。可通过arguments[index]来获取对应索引的值,通过length属性来获取参数个数。

2.arguments的值永远与对应命名参数的值保持同步。修改arguments的值命名参数的值就会随之改变,但修改命名参数的值不会改变arguments对应的值。

3.如果传入一个参数,argmuents[1]设置的值不会反应到命名参数中,因为arguments对象的长度是由传入的参数个数决定的,不是由定义函数时的命名参数的个数决定的。

4.对于没有传递值的命名参数将自动被赋予undefined值。

5.js中所有的参数传递的都是值,不可能通过引用传递参数。

三、没有重载

js中没有重载,如果定义了两个名字相同的函数,则该名字只属于后定义的函数。

时间: 2024-10-21 19:27:03

JavaScript之基本概念的相关文章

JavaScript函数节流概念与用法实例详解_javascript技巧

本文实例讲述了JavaScript函数节流概念与用法.分享给大家供大家参考,具体如下: 最近在做网页的时候有个需求,就是浏览器窗口改变的时候需要改一些页面元素大小,于是乎很自然的想到了window的resize事件,于是乎我是这么写的 <!DOCTYPE html> <html> <head> <title>Throttle</title> </head> <body> <script type="text

javascript中闭包概念与用法深入理解_javascript技巧

本文实例分析了javascript中闭包概念与用法.分享给大家供大家参考,具体如下: 1.问题的引出,什么时候会遇到闭包? 首先因为JS是没有块状作用域的,但是有函数作用域即函数作为了局部变量之间的界限,不同函数内的局部变量具有独立性, 因为JS没有块状作用域,笔者初学JS时,在事件的监听时,因为不理解JS中局部变量的作用域,犯过不少错误! (1)JS中的变量作用域 for(var i=0;i<9;i++) { } alert(i) //输出9 我们发现,虽然变量i是块状区域for()内的一个局

5个JAVASCRIPT框架详细的比较

框架比较 表1对本文中讨论的五个框架提供详细的比较   Prototype jQuery YUI ExtJS MooTools Latest Version 1.6.1 1.4.1 3.00 3.1 1.2.4 License MIT MIT & GPL BSD Commercial & GPL v3 MIT       Browser Compatibility     IE Support 6.0+ 6.0+ 6.0+ 6.0+ 6.0+ Firefox Support 1.5+ 2.

《JavaScript构建Web和ArcGIS Server应用实战》——2.3 使用ArcGIS API for JavaScript创建应用程序的基本步骤

2.3 使用ArcGIS API for JavaScript创建应用程序的基本步骤 使用ArcGIS API for JavaScript创建任何GIS地图应用程序,都需要遵循一些步骤.假如想让地图成为应用程序的一部分,那么就需要你按照这些步骤来执行.在阅读本书时,我很难想象你不按照这些步骤来做会遇到怎样糟糕的情况.简而言之,你需要遵循以下步骤. 1.创建页面HTML代码. 2.引用ArcGIS API for JavaScript和样式表. 3.加载模块. 4.确保DOM可用. 5.创建地图

什么是Javascript Hoisting?

Javascript是一门容易遭人误解的语言,但是它的强大毋庸置疑.个人觉得,要想深入理解Javascript语言,首先必须对其基本的概念(例如:Scope,Closure,Hoisting等)要真正理解.今天想通过自己的理解来对Javascript Hoisting(国内一般翻译为 变量提升)做一个阐述: 在解释Javascript Hoisting之前,先看一下几段代码: 1 //代码段1-------------------------- 2 var myvar = '变量值'; 3 co

《JavaScript专家编程》——第1章 对象和原型 1.1鸟瞰JavaScript

第1章 对象和原型 练习不会造就完美,只有使用最佳的方法来练习才能造就完美. --Vince Lombardi 对专家来说,把JavaScript的核心概念讲上3章似乎有点多,毕竟这些是语言最基本的组成部分.我的主张是,有的人虽然不能读写,但可以说话.就像有的开发人员对JavaScript的基本功能很熟悉,但对里面那些复杂的东西可能就没那么了解了. 本书的目标是像明灯一样照亮语言中那些晦涩的角落.里面包含的很多概念你可能已经试着学习过了,甚至可以假设你已经理解了.这里可以想象一下:你正降落到你大

JavaScript面向对象编程及思想

在面向对象程序设计(组装计算机)的过程中,通常不用关心对象(例如硬盘)数据的内部实现,这种内部实现我们称为对象的封装,这些数据我们称之为对象的属性或实例字段. 一个对象(硬盘)还要提供一些接口,好使外面程序(例如主板)调用(连接),这种可以调用对象的接口我们称之为方法或成员函数. 通过对象提供的方法可以调用对象内部属性来完成指定功能,这样就把前面介绍的程序设计最重要的数据与算法结合成了一个统一体,同时隐藏了对象中数据的实现过程,实现了当前最流行的面向对象编程思想. 何为对象 对象就是一种数据结构

javascript Object与Function使用_javascript技巧

如今的JavaScript再也不是以前被当做玩具的在网页上运行的花哨的脚本了.JavaScript已经逐渐标准化,作为一门真正的编程语言广泛地应用在Web开发上.因此,越来越多的人开始重新认识这门脚本语言,并在不断地探索关于JavaScript核心思想和实现原理,过程中遇到了一些非常混淆的问题.本文着重解释一个比较常见但是非常容易使开发人员或者是初学JavaScript的人非常混淆的问题,那就是两个核心构造函数Object和Function,他们之间到底有什么关系?为何instanceof运算符

Javascript闭包用法实例分析_javascript技巧

本文实例分析了Javascript闭包的概念及用法.分享给大家供大家参考.具体如下: 提到闭包,想必大家都早有耳闻,下面说下我的简单理解. 说实话平时工作中实际手动写闭包的场景并不多,但是项目中用到的第三方框架和组件或多或少用到了闭包. 所以,了解闭包是非常必要的.呵呵... 一.什么是闭包 简而言之,就是能够读取其他函数内部变量的函数. 由于JS变量作用域的特性,外部不能访问内部变量,内部可以外部变量. 二.使用场景 1. 实现私有成员. 2. 保护命名空间,避免污染全局变量. 3. 缓存变量