js003-基本概念

3.1 语法

3.1.1 区分大小写 ECMAScript中的一切(变量、函数名和操作符)都是区分大小写的,并且不能用关键字作为函数名:如 typeof。

3.1.2 标识符 所谓标识符就是变量、函数、属性的名字、或者函数的参数,标识符符合以下规格:

第一个字母必须是一个字母、下划线或者一个美元符号

其他字符可以是字母、下划线、美元符号、数字

不能把关键字、保留字、true false 和null作为标识符

3.1.3 注释  //单行注释

/*

块级注释

*/

3.1.4 严格模式  要在整个脚本中启用严格模式 可以在顶部添加代码

"use strict";

如:function dosomething(){"use strict";   //函数体  }

3.1.5 语句  ECMAScript以一个分号结尾

3.2关键字和保留字

ECMA-262描述了具有特定用途的关键字,这些关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。关键字也是语言保留的,不能用于标识符

3.3 变量

ECMScript的变量是松散类型的。松散类型:就是可以用来班次你任何类型的数据。定义变量:

var  message;

该行代码定义了一个名为message的变量,该变量可以保存任何值,未初始化的保存一个特殊值---undefined

初始化一个变量

var message = "hi";

修改变量值的同时修改类型

var message = "hi";

message = 100;  //有效,但是不推荐

局部变量和全局变量

局部变量

全局变量

function test(){

var message = "hi"; //局部变量

}

test();

alert(message); //错误

function test(){

message = "hi"; //全局变量

}

test();

alert(message); //"hi"

变量message是在函数中使用var定义的,当函数被调用时,就会创建该变量并为其赋值,而此后就会立即被销毁,在下面的代码中就不能使用,所以会出现错误。

省略var 。  message就成了全局变量。这样只要调用过一次test()函数,这个变量就有了定义,可以在函数外部的任何地方被访问到。。但是不推荐这样做,因为难以维护,给未声明的变量赋值在严格模式下会导致抛出referenceerror的错误

可以使用一条语句定义多个变量,如下,用逗号(,)隔开

var message = "hi",

found = "false",

age = 20;

定义了3个变量,因为ECMAScript是松散型的,所以不同类型的变量可以用一条语句来完成

3.4 数据类型

3.4.1 typeof操作符

鉴于ECMAScript是松散型的,因此需要一种手段来检测给定变量的数据类型---typeof。对一个值使用typeof操作符可能返回夏磊某个字符串

undifine

该值未定义

boolean

是布尔值

string

是字符串

number

数值

object

这个值是对象或者null

function

这个值是函数

例子:

var message = "some thing";

输出

alert(typeof(message));

"string"

alert(typeof(message));

"string"

alert(typeof 99);

"number"

这几个例子说明typeof操作符的操作数可以是变量也可以是数字。Typeof是一个操作符不是一个函数,所以后面的括号()是可有可无的。

3.4.2 undefined类型

该类型只有一个值,即特殊的undefined。变量在用var声明后,要是没有对其进行初始化,它的默认值就为undefined。

例如

var message ;

alert(message == undefined) ;

返回true

包含undefined值和未定义的变量是不一样的

var message ;     //下面这个变量生命后默认取得了undefined值

//var age = 20;      //该变量没有声明

alert(message);    //undefind

alert(age);       //产生错误

3.4.3 null类型

Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度看,null值表示一个空对象指针,所以typeof操作符检测null值时会返回object

var car = null;

alert(typeof car);      //object

返回object

3.4.4            boolean类型

   

var found = true;

var lost = false;

 

数据类型

转换为true的值

转换为false的值

Boolean

true

false

string

任何非空字符串

“”(空字符串)

number

任何非0数字值(包括无穷大)

0和nan

object

任何对象

null

undefined

n/a

undefined

 

 

 

3.4.5            number类型

   JScript 支持整数和浮点数。整数可以为正数、0 或者负数;浮点数可以包含小数点、也可以包含一个 "e"(大小写均可,在科学记数法中表示“10的幂”)、或者同时包含这两项。这些数遵循数值表示的 IEEE 754 标准。最后,还有一些特殊的数值:

  • NaN,即不是一个数
  • 正无穷
  • 负无穷
  • 正数 0
  • 负数 0

整数可以以 10 (十进制)、8 (八进制)和 16 (十六进制)作为基数来表示。

八进制整数用一个前导 "0" 指明,并可以包含从 0 到 7 的数字。如果某个数字有一个前导 "0" 但是又包含数字 "8"和/或 "9",则该数字是一个十进制数。如果一个应该为八进制的数中包含了字母 "e" (或 "E") 将会产生一个错误。

十六进制("hex") 整数用前导 "0x" 指明(其中的 "X" 大小写均可),并且可以包含从 0 到 9 的数字以及从 A 到 F 的字符(字母的大小写均可)。字母 "e" 在十六进制记数法中是一个允许的数字,但并不是表示这是一个指数。字母 A 到 F 是作为单个的数字,用来表示以 10 为基数的 10 到 15 这些数。也就是说,0xF 等于 15,而 0x10 就等于 16。

八进制数和十六进制数可以是负数,但不能是小数。一个以单个 "0" 开头并包含一个小数点的数是一个十进制的浮点数;如果一个数以 "0x" 或 "00"开头并包含一个小数点,则该小数点右边的任何数都将被忽略。

一些示例:

.0001, 0.0001, 1e-4, 1.0e-4  // 四个浮点数,它们互等。

3.45e2                       // 一个浮点数,等于 345。

42                           // 一个整数。

0377                         // 一个八进制整数,等于255。

00.0001                      // 由于八进制数不能有小数部分,因此这个数等于 0。

0378                         // 一个整数,等于 378。

0Xff                         // 一个十六进制整数,等于 255。

0x37CF                       // 一个十六进制整数,等于 14287。

0x3e7                        // 一个十六进制整数,等于 999。

0x3.45e2                     // 由于十六进制数不能有小数部分,因此这个数等于 3。

 

 

 

3.4.6            String类型

   String类型包含一些特殊的字符字面量,页脚转义序列。用于表示非打印字符或者具有其他用途的字符。这些字符字面量如下表所示:

字面量

含义

\n

换行

\t

制表

\b

退格

\r

回车

\f

进纸

\\

斜杠

\' (单引号)

单引号

\"  (双引号)

双引号

\xnn

以16进制代码nn表示的一个字符(其中n为0~F)

\unnn

以16进制代码nnnn表示的一个Unicode字符(其中n为0~F)

 

字符串特点:字符串一单创建,他们的值就不能改变

转换为字符串:要把一个值转换为一个字符串有两种方式。

tostring()方法

(调用tostring()方法不必传递参数)

           var age = 11;

           var ageAsString = age.tostring();

传递参数的tostring()

           var num = 10;

           alert(num.tostring());    //"10"

           alert(num.tostring(2));   //"1010"

           alert(num.tostring(8));   //"12"

           alert(num.tostring(10));  //"10"

           alert(num.tostring(16));  //"a"

 

3.4.7            object类型

var o = new object();

每个实例都具有下列属性和方法。

constructor

保存着用于创建当前对象的函数

hasOwnproPerty(propertyName)

用于检查给定的属性在当前对象实例中(不是在实例原型中)是否存在

isPrototypeOf(object)

用于检查传入的对象是否传入对象原型

propertyIsEnumerable(propertyName)

检查给定的属性能否用for-in语句来枚举

toLocaleString()

返回对象的字符串表示,该字符串与执行环境的地区对应。

toString()

返回对象的字符串表示

valueOf()

返回对象的字符串、数值或布尔值表示,通常与tostring()返回的值一样

3.5                操作符

包括算术操作符(如加减号)、位操作符、关系操作符和相等操作符。ECMAScript操作符雨中不同之处在于:它能够适用于很多值,例如字符串、数字值、布尔值、对象

3.5.1 一元操作符

只能操作一个数值的操作符叫做一元操作符,这是ECMAScript中最简单的操作符

递增操作符

递减操作符

var age = 11;

++age;

var age = 11;

--age;

使用前置递增或者递减操作符,变量的值是在语句被求值以前改变的。

 

3.5.2 位操作符

按位非(NOT)

~

按位与(AND)

&

按位或(OR)

|

按位异或(XOR)

^

左移

<<

有符号右移

>>

无符号右移

>>>

3.5.3布尔操作符

逻辑非

逻辑与

&&

逻辑或

||

3.5.4            乘性操作符

乘法

*

除法

/

求模

%

3.5.5            加性操作符

加法

+

减法

-

3.5.6            关系操作符 (大写字母的布尔值小于小写字母的布尔值)

大于

>

小于

<

大于等于

>=

小于等于

<=

3.5.7            相等操作符

相等和不相等

==

!=

全等和不全等

===

!==

3.5.8            条件操作符

Variable = boolean_expression ? true_value : false_value;

3.5.9            逗号操作符

var num1 = 1, num2 = 2, num3 = 3;  逗号可以用于生命多个变量,逗号还可以用于赋值:var num = (2,6,5,3,8,4,9);  //num值为9,因为最后一个值为9

3.5.10        赋值操作符

乘/赋值

*=

除/赋值

/=

模/赋值

=

加/赋值

+=

减/赋值

-=

左移/赋值

<<=

有符号右移/赋值

>>=

无符号右移/赋值

>>>=

3.6                语句

3.6.1        if语句

if (a < b) {

alert("A is less than B");

}else if (a > b) {

alert("A is greater than B");

}else{

alert("A is equal to B");

}

3.6.2        do-while语句

do{

statement

}while(expression)

3.6.3        while语句

while(i<0){

i++;

}

3.6.4        for语句

for (var i = thing.length - 1; i >= 0; i--) {

alert[i]

};

3.6.5        for-in语句

for(var propName in window){

document.write(propName);

}

3.6.6        label语句

start : for(var i = 0;i <= count; i++){

alert(i);

}

3.6.7        break和continue语句

var num = 0;

for (var i =  1; i <= 0; i++) {

if(i%5 == 0){

break;

}

num++;

}

alert(num)      //4

var num = 0;

for (var i =  1; i <= 0; i++) {

if(i%5 == 0){

coutinue;

}

num++;

}

alert(num)      //8

3.6.8         with语句

with语句的作用干事将大妈的作用域设置到一个特定的对象中。语法如下:

with (expression) statement

定义with 语句额目的主要是为了简化多次编写同一个对象的工作,如下面的例子:

var qs = location.search.substring(1);

var hostName = location.hostName;

var url = href;

以上几行代码都包含location对象,如果使用with语句,就可以吧上面代码编写成如下所示:

with(location){

var qs = search.substring(1);

var hostName = hostName;

var url = href;

}

3.6.9        switch语句

语法

例子

switch(expression){

case value : statement

break;

case value : statement

break;

case value : statement

break;

case value : statement

break;

default : statement

}

switch(expression){

case 20 : alert(20)

break;

case 18 : alert(18)

break;

case 16 : alert(16)

break;

case 14 : alert(14)

break;

default : alert("other")

}

3.7            函数

函数的基本语法如下所示

function functionName(arg0, arg1, arg2,..., argN){

statement:

}

函数示例:

function sayhi(name, message){

alert("hello" + name +"," message);

}

严格模式对函数有一些限制:

不能把函数命名为eval或argument;

不能把参数命名为eval或argument;

不能出现两个命名参数同名的情况。

3.7.1        理解参数

3.7.2        没有重载

3.8 小结

版权声明:未经作者同意,不得私自转载。http://www.cnblogs.com/lal-fighting/

js003-基本概念的更多相关文章

  1. 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

    一.前言     DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...

  2. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  3. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  4. 声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS

    需要做个音频的PPM表,看着一堆的音频术语真是懵了,苦苦在网上扒了几天的文档,终于有了点收获,下面关于声音的分贝做个总结. 分贝 Decibel 分贝(dB)是一个对数单位(logarithmic u ...

  5. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  6. 【Linux大系】Linux的概念与体系

    感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 我在这一系列文章中阐述Linux的基 本概念.Linux操作系统继承自UNIX.一个操作系统是一套控制和使用计算 ...

  7. KOTLIN开发语言文档(官方文档) -- 2.基本概念

    网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2.   基本概念 2.1.  基本类型 从可以在任何变量处理调用成员函数和属性 ...

  8. .NET面试题系列[5] - 垃圾回收:概念与策略

    面试出现频率:经常出现,但通常不会问的十分深入.通常来说,看完我这篇文章就足够应付面试了.面试时主要考察垃圾回收的基本概念,标记-压缩算法,以及对于微软的垃圾回收模板的理解.知道什么时候需要继承IDi ...

  9. 《徐徐道来话Java》(1):泛型的基本概念

    泛型是一种编程范式(Programming Paradigm),是为了效率和重用性产生的.由Alexander Stepanov(C++标准库主要设计师)和David Musser(伦斯勒理工学院CS ...

  10. 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型

    1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...

随机推荐

  1. 前端框架——AmazeUI学习

    AmazeUI官网: http://amazeui.org/ 前后台模板下载:链接:链接:http://pan.baidu.com/s/1c2uVfk0 密码:zuva 十大前端框架参考链接:http ...

  2. Android开发之ViewPager的简单使用

    ViewPager是V4包中的,如果你的编译器敲不出ViewPager,那么你就需要添加,看下面: 第一步:点击+号 第二步:选择第一个Library 第三步:添加这个包: 然后点击ok-->o ...

  3. Spring学习进阶(四) Spring JDBC

    Spring JDBC是Spring所提供的持久层技术.主要目的是降低使用JDBC API的门槛,以一种更直接,更简洁的方式使用JDBC API.在Spring JDBC里用户仅需要做哪些比不可少的事 ...

  4. nodejs实现的简单接口

    var http = require('http'); var mysql = require('mysql'); var connection = mysql.createConnection({ ...

  5. Memcached, Redis, MongoDB区别

    mongodb和memcached不是一个范畴内的东西.mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据.mongodb和memcached不存在谁替换谁的问题. 和 ...

  6. linux基础-第十五单元 软件包的管理

    使用RPM安装及移除软件 什么是RPM rpm的文件名 rpm软件安装与移除工作中经常使用的选项 查看RPM软件包中的信息 查询已安装的软件包信息 RPM包的属性依赖性问题 什么是RPM包的属性依赖性 ...

  7. Android 之px于dp在Java代码中的转换

    现在由于用到了,使用代码进行动态布局,所以需要进行px于dp之间的转换. 现将其封装为方法,以便于调用. public int DpToPx(Context context,float dp){ fl ...

  8. hdu1161 欧拉路

    欧拉路径是指能从一个点出发能够“一笔画”完整张图的路径:(每条边只经过一次而不是点) 在无向图中:如果每个点的度都为偶数 那么这个图是欧拉回路:如果最多有2个奇数点,那么出发点和到达点必定为该2点,那 ...

  9. json:There is a cycle in the hierarchy!

    在使用JSONObject.fromObject的时候,出现“There is a cycle in the hierarchy”异常. 意思是出现了死循环,也就是Model之间有循环包含关系: 解决 ...

  10. 使用navicat连接mysql要报10038的错误

    1.mysql的设置 (1)授权mysql>grant all privileges on *.*  to  'root'@'%'  identified by 'youpassword'  w ...