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后台开发工作的都接触过同步&异步.阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞.异步就是非阻塞,下面我们先剖析下这几个概念分 ...
随机推荐
- 前端框架——AmazeUI学习
AmazeUI官网: http://amazeui.org/ 前后台模板下载:链接:链接:http://pan.baidu.com/s/1c2uVfk0 密码:zuva 十大前端框架参考链接:http ...
- Android开发之ViewPager的简单使用
ViewPager是V4包中的,如果你的编译器敲不出ViewPager,那么你就需要添加,看下面: 第一步:点击+号 第二步:选择第一个Library 第三步:添加这个包: 然后点击ok-->o ...
- Spring学习进阶(四) Spring JDBC
Spring JDBC是Spring所提供的持久层技术.主要目的是降低使用JDBC API的门槛,以一种更直接,更简洁的方式使用JDBC API.在Spring JDBC里用户仅需要做哪些比不可少的事 ...
- nodejs实现的简单接口
var http = require('http'); var mysql = require('mysql'); var connection = mysql.createConnection({ ...
- Memcached, Redis, MongoDB区别
mongodb和memcached不是一个范畴内的东西.mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据.mongodb和memcached不存在谁替换谁的问题. 和 ...
- linux基础-第十五单元 软件包的管理
使用RPM安装及移除软件 什么是RPM rpm的文件名 rpm软件安装与移除工作中经常使用的选项 查看RPM软件包中的信息 查询已安装的软件包信息 RPM包的属性依赖性问题 什么是RPM包的属性依赖性 ...
- Android 之px于dp在Java代码中的转换
现在由于用到了,使用代码进行动态布局,所以需要进行px于dp之间的转换. 现将其封装为方法,以便于调用. public int DpToPx(Context context,float dp){ fl ...
- hdu1161 欧拉路
欧拉路径是指能从一个点出发能够“一笔画”完整张图的路径:(每条边只经过一次而不是点) 在无向图中:如果每个点的度都为偶数 那么这个图是欧拉回路:如果最多有2个奇数点,那么出发点和到达点必定为该2点,那 ...
- json:There is a cycle in the hierarchy!
在使用JSONObject.fromObject的时候,出现“There is a cycle in the hierarchy”异常. 意思是出现了死循环,也就是Model之间有循环包含关系: 解决 ...
- 使用navicat连接mysql要报10038的错误
1.mysql的设置 (1)授权mysql>grant all privileges on *.* to 'root'@'%' identified by 'youpassword' w ...