相关理论概念:

直接量的概念:直接描述某个(些)存储空间的值的量,如变量的值、对象的值、数组的值。

数据类型:在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。

1、变量的声明和使用

  变量:是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。

  语法规则:

    var 变量名;

  然后进行赋值:num=10时直接赋值:

  var num=10;

  良好的变量命名方式:

  1. 变量必须以字母开头;
  2. 变量名称对大小写敏感(y 和 Y 是不同的变量);
  3. 变量名应当总是遵守驼峰大小写命名法,并且命名前缀应当是名词。

  代码示例:

    //好的写法:

    var count = 10;

    var myName = "Nicholas";

    var found = true;

    //不好的写法:

    var getCount = 10;

    var isFound = true;

2、数据类型

数据类型 含义
undefined 未定义
null
string 字符串类型
boolean 布尔类型
number 数值类型

注意:

  1. 居然undefined和null的含义不同,但undefined实际上是由null派生来的,ECMAScript把它们定义为相等的。
  2. number类型既可以表示32位整数,还可以表示64位浮点数。
  3.  is not defined与undefined的区别:is not defined是未声明定义,找不到。undefined是已定义在目录文件中未找到。

一、基础数据类型:

  1、undefined:

    undefined是一个特殊值,那些没被变量初始化的变量都有一个初始值,即undefined,表示这个变量等待被赋值。

    代码示例:

    //不好的写法

    var person;

    console.log(person===undefined); //true

    //foo未被声明

    var person;

    console.log(typeof person); //"undefined"

    console.log(typeof foo);//"undefined"

    //好的写法,建议使用null

    var person =null;

    console.log(person=== null);

  2、null

  null是一个特殊值,但我们常常误解它,将它和undefined搞混。在以下场景中应当使用null.

  • 用来初始化一个变量,这个变量可能赋值为一个对象。
  • 用来和一个已经初始化的变量比较,这个变量可以是也可以不是一个对象。
  • 当函数的参数期望是对象时,用作参数传入。
  • 当函数的返回值期望是对象时,用作返回值传出

  还有以下两个场景不应当使用null.

  • 不要使用null来检测是否传入了某个参数。
  • 不要使用null来检测一个未初始化的变量

  代码示例:

  //好的用法

  var person = null;

  //好的用法

  function  getperson () {

    if (condition){

      return new person ("Nicholas");

    } else {

      return null;

    }

  }

  //好的用法

  var person = getPerson ();

  if(person != null ){

    dosomething();

  }

  //不好的写法:用来和未初始化的变量比较

  var person;

  if (person !=null){

    dosomething();

  }

  //不好的写法:检测是否传入了参数

  function dosomething (arg1,arg2,arg3,arg4) {

    if ( arg4 != null){

      dosomethingElse();

    }

  }

 注意:最好把null理解为占位符(placeholder)。

  检测属性避免非空比较:

  另外一种用到null(以及undefined)的场景是当检测一个属性是否在对象中存在时,比如:

  //不好的写法:检测假值

  if ( object[propertyName]) {

    //一些代码

  }

  //不好的写法:和null相比较

  if( object[propertyName] != null){

    //一些代码

  }  

  //不好的写法:和undefined比较

  if (object[propertyName]){

    //一些代码

  }

  注意:建议使用in运算符进行判断属性。

  如果实例对象的属性存在、或者继承自对象的原型,in运算符都会返回true.比如:

  var object = {

    count:0;

    related: null;

  };

  //好的写法

  if( "count" in object){

    //这里的代码会执行

  }

  //不好的写法:检测假值

  if ( object["count"]){

    //这里的代码不会执行

  }

  //好的写法

  if ( "related" in object) {

    //这里的代码会执行

  }

  //不好的写法:检测是否为 null

  if ( object["related"] !=null ){

    //这里的代码不会执行

  }

  //对于所有非dom对象来说,这是好写法

  if (object.hasOwnProperty("related")){

    //执行这里的代码

  }

  //如果你不确定是否为dom对象,则这样写

  if ("hasOwnProperty" in object &&  object.hasOwnProperty("related")){

    //执行这里的代码

  }

  hasOwnProperty方法的使用:

  • 如果你检查实例对象的某个属性是否存在, 可以使用它。因为所有继承obj的javaScript对象都有这个方法。
  • 如果实例中存在这个属性的返回true。注意:如果这个属性存在于原型里,则返回false。

  注意:

  • 在IE8以及更早版本的IE中,DOM对象并非继承自object,因此也不包含hasOwnProperty方法,也就是说,你在调用dom对象的hasOwnProperty方法之前应当先检测其是否存在(假如你已经知道对象不是dom,则可以省略这一步)。 
  • 不管你什么时候需要检测属性的存在性,请使用in运算符或者hasOwnProperty方法这样可以避免很多bug。 

  3、string  字符串类型

  在javaScript中所有字符是16位的,使用的是Unicode字符编码集。可以使用单引号或双引号来表示,它可能包含0个或多个字符。

  在javaScript中没有字符类型的概念,若需要转义字符则使用/(斜杠)+符号或相关的字母来表示。

  javaScript中字符串的编码风格:

    • 建议使用双引号来表示一个字符串。Crockford的编程规范和jquery的核心风格指南都是使用双引号来表示。利于开发效率,上下文编码规范统一,因为如java等语言的字符串是使用双引号来表示的。
    • 谷歌则是使用单引号来表示。

  相关示例:

  //不好写法

  var longString ="Here's the story , of a man \ named Brady.";

  //好的写法

  var  longString ="Here's the story , of a man " + " named Brady.";

  4、boolean 布尔类型

  布尔(逻辑)只能有两个值:true 或 false。

  相关示例:

  var x=true;

  var y=false;

  5、number类型

  javaScript只有一个数字类型,它在内部被表示为64位的浮点数,类似于java的double浮点类型。

  在javaScript中1和1.0的值相同,在java等语言中是不等价的,是两种数字类型。

  相关示例:

  //整数

  var count =10;

  //小数

  var price = 10.0;

  var price =10.00;

  //不推荐的小数写法:没有小数部分

  var price = 10.;

  //不推荐的小数写法:没有整数部分

  var price = .1;

  //不推荐的写法:八进制写法已被弃用了

  var num = 010;

  //十六进制写法

  var num = 0xA2;

  //科学计数法

  var num = 1e23;

二、引用类型

 1、数组

  数组:在数据结构中编号的值是有序集合。

  下面的代码创建名为 cars 的数组:

  var cars=new Array();
  cars[0]="Saab";
  cars[1]="Volvo";
  cars[2]="BMW";

  或者 (condensed array):

  var cars=new Array("Saab","Volvo","BMW");

  或者 (literal array):

  var cars=["Saab","Volvo","BMW"];
  数组下标是基于零的,所以第一个项目是 [0],第二个是 [1],以此类推。
  相关示例:
  //不好的写法:不赞成使用array构造函数显式地创建数组.
  var colors = new Array("red","green","blue");
  var number = new Array (1,2,3,4);
  //好的写法:使用数组初始元素来代替array构造函数来创建数组。
  var colors = ["red","green","blue"];
  var numbers = [1,2,3,4];

 2、对象

  对象:将一组数据与这组数据有关操作组装在一起,形成一个实体,在数据结构中编号的值是无序集合,这个实体就是对象。包含行为和相关属性。

  对象由花括号分隔。在括号内部,对象的属性以名称和值对的形式 (name : value) 来定义。属性由逗号分隔:

  var person={firstname:"John", lastname:"Doe", id:5566};

  上面例子中的对象 (person) 有三个属性:firstname、lastname 以及 id。

  空格和折行无关紧要。声明可横跨多行:

  var person={
    firstname : "John",
    lastname  : "Doe",
    id        :  5566
  };

  对象属性有两种寻址方式:

  name=person.lastname;
  name=person["lastname"];
  相关示例:
  //不好的写法
  var book = new Object();
  book.title = "Maintainable JavaScript";
  book.author = "Nicholas C. Zakas";
  //好的写法
  var book = {
    title: "Maintainable JavaScript";
    author: "Nicholas C. Zakas";
  }

 3、函数

  函数的作用是封装相关数据或组件用的。

  函数就是包裹在花括号中的代码块,前面使用了关键词 function:

  function functionname()
  {
    //执行代码
  }

  当调用该函数时,会执行函数内的代码。

  可以在某事件发生时直接调用函数(比如当用户点击按钮时),并且可由 JavaScript 在任何位置进行调用。

3、运算符

  运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。

  

javaScript基础语法(上)的更多相关文章

  1. javascript基础语法——词法结构

    × 目录 [1]java [2]定义 [3]大小写[4]保留字[5]注释[6]空白[7]分号 前面的话 javascript是一门简单的语言,也是一门复杂的语言.说它简单,是因为学会使用它只需片刻功夫 ...

  2. javascript基础语法备忘录-变量和数据类型

    //javascript基础语法备忘录-变量和数据类型 // 定义变量使用var关键字 后面跟变量名,不要使用eval 和arguments为变量名 var message = "hi&qu ...

  3. javascript基础语法——表达式

    × 目录 [1]原始表达式 [2]复杂表达式 前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascr ...

  4. Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

    Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...

  5. JavaScript基础语法资料

    JavaScript基础第01天 1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的 ...

  6. Nice!JavaScript基础语法知识都在这儿了

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star 转载请注明出处! 链接:https://blog.csdn ...

  7. 2021年3月-第03阶段-前端基础-JavaScript基础语法-JavaScript基础第01天

    1 - 编程语言 1.1 编程 编程: 就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程. 计算机程序: 就是计算机所执行的一系列的指令集合,而程序全部都是用我们所掌 ...

  8. Web前端-JavaScript基础教程上

    Web前端-JavaScript基础教程 将放入菜单栏中,便于阅读! JavaScript是web前端开发的编程语言,大多数网站都使用到了JavaScript,所以我们要进行学习,JavaScript ...

  9. 12天搞定Python,基础语法(上)

    不知你是否见过建楼房的过程,没有的话,找个时间去瞧一瞧,看一看.看过之后,你就会明白.建楼房,只有打好地基之后,才能在砌墙,建的楼层越高,打的地基就越深. 学编程也一样,要想得心应手的应用,得先打好地 ...

  10. JavaScript 基础语法

    1 谈谈 JavaScript JavaScript,通常会简称为'JS', 是一种浏览器脚本语言 1.1 JavaScript 编程语言特点 JavaScript是一种脚本编程语言 JavaScri ...

随机推荐

  1. ASP.NET MVC 视图(四)

    ASP.NET MVC 视图(四) 前言 上篇对于利用IoC框架对视图的实现进行依赖注入,最后还简单的介绍一下自定义的视图辅助器是怎么定义和使用的,对于Razor语法的细节和辅助器的使用下篇会说讲到, ...

  2. C#的泛型的类型参数可以有带参数的构造函数的约束方式吗?

    Review后看到标题让我十分羞愧自己语文功底太差,估计...请见谅......我还特地把这句写回开头了...... 问题 前天遇到的一个问题,所以在MSDN发了个问,刚也丰富了下问题,关于泛型的. ...

  3. Redis学习手册(目录)

    为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...

  4. MVC视图展现模式之移动布局解析-续集

    网站就必须用响应式布局吗?MVC视图展现模式之移动布局:http://www.cnblogs.com/dunitian/p/5213787.html demo:http://pan.baidu.com ...

  5. GitHub实战系列~2.把本地项目提交到github中 2015-12-10

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ———————————————————————————————————————— ...

  6. CSS系列:CSS常用样式

    1. 通用样式 Base.css * { margin:; padding:; } body { width: 1000px; margin: 0 auto; font-size: 12px; fon ...

  7. 如何处理CSS3属性前缀

    今天闲来无聊,重新来说说CSS3前缀的问题.在春节前和@一丝姐姐说起Sass中有关于gradient的mixins.姐姐说: 为什么还要用mixin呢?为什么不使用Autoprefixer?使用Aut ...

  8. 聊聊asp.net中Web Api的使用

    扯淡 随着app应用的崛起,后端服务开发的也越来越多,除了很多优秀的nodejs框架之外,微软当然也会在这个方面提供更便捷的开发方式.这是微软一贯的作风,如果从开发的便捷性来说的话微软是当之无愧的老大 ...

  9. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  10. 数据结构笔记--二叉查找树概述以及java代码实现

    一些概念: 二叉查找树的重要性质:对于树中的每一个节点X,它的左子树任一节点的值均小于X,右子树上任意节点的值均大于X. 二叉查找树是java的TreeSet和TreeMap类实现的基础. 由于树的递 ...