js003-基本概念
js003-基本概念
3.1 语法
3.1.1 区分大小写 ECMAScript中的一切(变量、函数名和操作符)都是区分大小写的,并且不能用关键字作为函数名:如 typeof。 |
|||
3.1.2 标识符 所谓标识符就是变量、函数、属性的名字、或者函数的参数,标识符符合以下规格:
|
|||
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-基本概念的更多相关文章
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 【Machine Learning】机器学习及其基础概念简介
机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)
集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...
- 声音分贝的概念,dBSPL.dBm,dBu,dBV,dBFS
需要做个音频的PPM表,看着一堆的音频术语真是懵了,苦苦在网上扒了几天的文档,终于有了点收获,下面关于声音的分贝做个总结. 分贝 Decibel 分贝(dB)是一个对数单位(logarithmic u ...
- js面向对象学习 - 对象概念及创建对象
原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...
- 【Linux大系】Linux的概念与体系
感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 我在这一系列文章中阐述Linux的基 本概念.Linux操作系统继承自UNIX.一个操作系统是一套控制和使用计算 ...
- KOTLIN开发语言文档(官方文档) -- 2.基本概念
网页链接:https://kotlinlang.org/docs/reference/basic-types.html 2. 基本概念 2.1. 基本类型 从可以在任何变量处理调用成员函数和属性 ...
- .NET面试题系列[5] - 垃圾回收:概念与策略
面试出现频率:经常出现,但通常不会问的十分深入.通常来说,看完我这篇文章就足够应付面试了.面试时主要考察垃圾回收的基本概念,标记-压缩算法,以及对于微软的垃圾回收模板的理解.知道什么时候需要继承IDi ...
- 《徐徐道来话Java》(1):泛型的基本概念
泛型是一种编程范式(Programming Paradigm),是为了效率和重用性产生的.由Alexander Stepanov(C++标准库主要设计师)和David Musser(伦斯勒理工学院CS ...
- 简述linux同步与异步、阻塞与非阻塞概念以及五种IO模型
1.概念剖析 相信很多从事linux后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...
随机推荐
- [转]MyBatis传入多个参数的问题 - mingyue1818
原文 http://www.cnblogs.com/mingyue1818/p/3714162.html 一.单个参数: public List<XXBean> getXXBeanLis ...
- 东大OJ 2SAT 异或
看了十年才懂懂了十年才会会了十年才会写写了十年才写完写完了十年才能改对 #include<stdio.h> #include<string.h> struct res{ int ...
- 安卓activity生命周期
相信不少朋友也已经看过这个流程图了,也基本了解了Activity生命周期的几个过程,我们就来说一说这几个过程. 1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法, ...
- tab切换(修改)
html代码: <div class="tabContent"> <ul class="tab clearFix"> <li cl ...
- 【转】深入浅出Java三大框架SSH与MVC的设计模式
原文链接:http://www.cnblogs.com/itao/archive/2011/08/22/2148844.html 在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架: ...
- CSS截取截取字符长度并显示省略号的方法
HTML部分 <div> <span>这是一个CSS3截取截取字符的例子.它根据宽度来处理.</span> </div> <div class=& ...
- html页面中meta的作用
meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中,meta 标签的用处很多.meta 的属性有两种:name和 ...
- 提供RESTful服务
RESTful广泛运用于互联网服务,而在企业应用中,大部分场景仍然是RPC服务,这是由于企业应用的业务复杂性造成的.但是基于SOAP的RPC服务也存在很多的弊端,比如服务异步处理比较麻烦,大部分RPC ...
- 【凯子哥带你学Framework】Activity界面显示全解析
前几天凯子哥写的Framework层的解析文章<Activity启动过程全解析>,反响还不错,这说明“写让大家都能看懂的Framework解析文章”的思想是基本正确的. 我个人觉得,深入分 ...
- Node.js模块
每一个Node.js都是一个Node.js模块,包括JavaScript文件(.js).JSON文本文件(.json)和二进制模块文件(.node). mymodul.js function Hell ...