Javascript基本概念(一)
JavaScript基本语法:
ECMAScript的语法大量借鉴了C以及其他类C语言的语法。
ECMAScript中的一切(变量、函数名、操作符)都区分大小写。
标识符:
含义:指变量、函数、属性的名字,或者函数的参数。
规则如下:
1. 第一个字符必须是一个字母、下划线、或一个美元符号($);
2. 其他字符可以是字母、下划线、美元符号或数字。
按照惯例:ECMAScript标识符采用驼峰大小写格式,也就是第一个字母小写,剩余每个单词的首字母大写。
不能将关键字、保留字true、false、null用作标示符。
注释:
单行://
多行:/* */
严格模式:
ECMAScript5引入了严格模式(strict mode),严格模式就是JavaScript定义了一种不同的解析与执行模式。在严格模式下,ECMAScript3中的一些不确定行为将得到处理,对于一些不安全的操作也会抛出错误。要在整个脚本中启用严格模式,可以在顶部添加如下代码:
“use strict”;
看起来这就像一个字符串,其实它就是一个编译指示(pragma),用于告诉支持的JavaScript引擎切换到严格模式。
严格模式也可以用到函数内部:
Function doSomething(){
“use strict”;
//函数体
}
严格模式下JavaScript的执行结果会有很大的不同。
语句:
ECMAScript中的语句以一个分号结尾;如果省略分号,则由解析器确定语句的结尾。
关键字和保留字:
Javascript 的保留关键字不可以用作变量、标签或者函数名。有些保留关键字是作为 Javascript 以后扩展使用。
abstract |
arguments |
boolean |
break |
byte |
case |
catch |
char |
class* |
const |
continue |
debugger |
default |
delete |
do |
double |
else |
enum* |
eval |
export* |
extends* |
false |
final |
finally |
float |
for |
function |
goto |
if |
implements |
import* |
in |
instanceof |
int |
interface |
let |
long |
native |
new |
null |
package |
private |
protected |
public |
return |
short |
static |
super* |
switch |
synchronized |
this |
throw |
throws |
transient |
true |
try |
typeof |
var |
void |
volatile |
while |
with |
yield |
* 标记的关键字是 ECMAScript5 中新添加的。
JavaScript 对象、属性和方法
您也应该避免使用 JavaScript 内置的对象、属性和方法的名称作为 Javascript 的变量或函数名:
Array |
Date |
eval |
function |
hasOwnProperty |
Infinity |
isFinite |
isNaN |
isPrototypeOf |
length |
Math |
NaN |
name |
Number |
Object |
prototype |
String |
toString |
undefined |
valueOf |
变量:
ECMAScript的变量是松散类型的,就是可以用来保存任何类型的数据。每一个变量仅仅是一个用于保存值的占位符而已。
定义变量:var 变量名; //像这种未初始化的变量会保存一个特殊的值-undefined
用var操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说,如果在函数中使用var定义一个变量,那么在这个函数退出后就会被销毁,在函数中定义变量省去var那么该变量就变成了全局变量,不建议这样用。
可以使用一个语句定义多个变量,逗号分开即可。
数据类型:
ECMAScript中有五种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number、String。还有一种复杂的数据类型---Object,它本质上是由一组无序的名值对组成。ECMAScript数据类型具有动态性,因此定义这几个类型就够了。
Typeof操作符:
用途:检测给定变量的数据类型。
“undefined”->未定义
“boolean”->布尔值
“string”->字符串
“number”->数值
“object”->对象或null
“function”->函数
Typeof是一个操作符而不是函数。
(从技术的角度讲,函数在ECMAScript中是对象,不是一种数据类型。然而函数也有一些特殊的属性,因此通过Typeof操作符来区分函数和其他对象是有必要的)
Undefined:
此类型只有一个值,即特殊的undefined。在使用var声明变量但未对其进行初始化,此变量的值就是undefined。
Null:
它是第二个只有一个值的数据类型,这个特殊的值为null。从逻辑角度来说,null值表示一个空对象指针,这也正是Typeof检测null时返回object的原因。
如果定义的变量准备在将来保存对象,那么最好将该变量初始化为null而不是其他值,这样只要直接检查null值就可以知道相应的变量是否已经保存了一个对象的引用。实际上undefined值是派生自null的,它们之间用相等操作符(==)总是返回true,不过这个操作符出于比较的目的会转换为其他操作数。尽管它们之间有这样的关系,但它们的用途完全不同。
Boolean:
此类型只有两个字面值:true/false。这两个值与数字值不一回事,并且区分大小写。
虽然它的值只有两个,但是ECMAScript中所有类型的值与这两个Boolean值等价的值。要将一个值转换为其对应的Boolean值,可以调用转型函数Boolean()。
数据类型 |
转换为true |
转换为false |
Boolean |
True |
False |
String |
任何字符串 |
“”空字符串 |
Number |
任何非零数值 |
0和NaN |
Object |
任何对象 |
Null |
Undefined |
N/A |
undefined |
Number:
它使用IEEE754格式来表示整数和浮点数值(浮点数值在某些语言中也被称为双精度数值)。为了支持各种数值类型,ECMA-262定义了不同的数值字面量格式。
最基本的数值字面量格式是十进制整数,除了十进制,还有八进制(第一位必须是0,然后数字序列为0~7,如果字面值中数值超出了范围,那么前导0将被忽略,后面的数子被当做十进制数值解析,在严格模式下八进制字面值是无效的,会导致JS引擎抛出错误)和十六进制(前面两位必须是0x,后跟十六进制数字0~9,A~F(或a~f))。在进行数字计算时都会转化为十进制进行计算。
鉴于Js中保存数值的方式,可以保存正零(+0)和负零(-0)。正零和负零被认为相等。
浮点数值:
所谓浮点数值,就是该数值必须包含一个小数点,并且小数点后面必须至少有一位数字。
由于保存浮点数值所需的内存空间是整数值的两倍,因此ECMAScript会不失时机地将浮点数转换为整数值。假如小数点后面没有任何数字就会最为整数值来保存。同样如果浮点数值本身表示的就是一个整数,那么该值也会被转换为整数。
对于那些极大值或极小值的数值,可以用e(或E)表示法(即科学计数法)表示的浮点数值。浮点数值的最高精度是17位小数。(注:浮点数值计算会产生误差,这是IEEE754数值浮点计算的通病)。
数值范围:
由于内存的限制,ECMAScript并不能保存世界上所有的数值。最小数值保存在:Number.MIN.VALUE,该数值是5e-324;最大数值保存在:Number.MAX.VALUE,该数值是1.7976931348623157e+308。如果计算结果超过该范围则自动转换为特殊的Infinity值,若为负数则为:-Infinity(负无穷);若为正数则为:Infinity(正无穷)。
如果某次计算返回了Infinity值,将无法进行下面的计算,因为Infinity不是能够参与计算的数值。想要确定一个数值是不是用穷的(也就是是不是位于最小和最大值之间),可以使用isFinite()函数。该函数参数位于最小和最大值之间将会返回true。
NaN:
NaN即非数值(Not a number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。在ECMAScript中,任何数值除以非数值会返回NaN,而不会影响其他代码的执行。(注:实际上0除以0才会返回NaN,整数除以0返回Infinitiy,负数除以0返回-Infinitiy)
两个特点:1>任何涉及NaN的操作都会返回NaN。
2>NaN与任何值都不相等,包括NaN本身。
根据以上两个特点,ECMAScript定义了isNaN()函数,该函数接受一个参数,该参数可以是任何类型,而这个函数会帮助我们确定这个参数是否不是数值。isNaN()接收到一个值后会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值。
isNaN()也适用于对象。在基于对象调用isNaN()函数时,会首先调用函数的。
(未完待续。。。)
Javascript基本概念(一)的更多相关文章
- JavaScript基本概念(二)
JavaScript 基本概念(二) 操作符和语句 目录 操作符 一元操作符 位操作符 布尔操作符 乘性操作符 其他操作符 语句部分 说起操作符,回忆下上一篇文章末尾说的话. 操作符 一元操作符 ++ ...
- 《JavaScript核心概念》基础部分重点摘录
注:<JavaScript核心概念>适合深入了解JavaScript,比我买的<JavaScript框架设计>语言和内容丰富多了(可能是我水平尚浅吧). 1. 作用域 var ...
- JavaScript的概念,引入,基本数据类型
08.05自我总结 JavaScript 一.概念 JavaScript(下文我们会用简称JS来代替)是脚本编程语言,JS语言开发的文件是以.js为后缀,通过在html文件中引入该js文件来控制htm ...
- Javascript单例模式概念与实例
前言 和其他编程语言一样,Javascript同样拥有着很多种设计模式,比如单例模式.代理模式.观察者模式等,熟练运用Javascript的设计模式可以使我们的代码逻辑更加清晰,并且更加易于维护和重构 ...
- js-js实现,在HTML中使用JavaScript,基本概念
Js实现: 1.JavaScript实现的组成: 核心(ECMAScript):由ECMA-262定义,提供核心语言功能 文档对象模型(DOM)提供访问和操作网页内容的方法以及接口 浏览器对象模型(B ...
- 转:深入理解JavaScript闭包概念
闭包向来给包括JavaScript程序员在内的程序员以神秘,高深的感觉,事实上,闭包的概念在函数式编程语言中算不上是难以理解的知识.如果对作用域,函数为独立的对象这样的基本概念理解较好的话,理解闭包的 ...
- 关于对javascript 提升概念 的总结与思考。
最近在看一本新买的书叫<你不知道的javascript上卷>..买到这本书也算是个巧合 不过真是物有所值.它对js的几个高级概念都做了非常深刻的描述和通过一些通俗易懂的方式来让我们理解.这 ...
- 深入理解Javascript闭包概念
一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部能够直接读取全局变量 ...
- JavaScript基本概念
JavaScript概念:JavaScript是一个弱类型语言,而且不要进行编译,是解释性语言.JavaScript最初是为了处理一些相较简单的数据验证,从而减少客户端与服务器端的通信提升效率,发展至 ...
- JavaScript基本概念A
简介 如果需要了解这些概念, 您应该熟悉 JS 的基本知识. 弱类型 在也无需绞尽脑汁觉得到底采用 float.double,int 还是 short 或是 long 还是 String.只需这样定义 ...
随机推荐
- LPC1768的usb使用--硬件篇
LPC1768芯片带有USB设备控制器,前面写的文章都是在说比较简单的设备驱动,今天来说复杂一点的 首先是硬件层的配置 #ifndef __USBHW_H__ #define __USBHW_H__ ...
- iOS开发——UIImageView
1.图像点击之后,全屏浏览 - (void)viewDidLoad { [super viewDidLoad]; _myImage=[[UIImageView alloc]initWithFrame: ...
- UVA - 129 Krypton Factor (困难的串)(回溯法)
题意:求由字母表前L个字母组成的字典序第n小的困难串.(如果一个字符串包含两个相邻的重复子串,则称它是"容易的串",其他串称为"困难的串".) 分析:回溯时,检 ...
- UILabel自适应高度
在网上看了一些,发现很多关于自适应高度的,不能用,就在下面写一种我常用的吧!保证可以直接粘贴复制到Xcode中运行. UILabel *label = [[UILabel alloc] init]; ...
- 设置ubuntu下使用ls命令显示文件颜色显示
文件颜色属性: # Attribute codes: 字符属性# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed#00无 ...
- Apache Bench安装与使用
一.Apache Bench简介 ApacheBench 是 Apache 服务器自带的一个web压力测试工具,简称ab.ab又是一个命令行工具,对发起负载的本机要求很低,根据ab命令可以创建很多的并 ...
- iOS 导航栏不可点击
self.navigationController.navigationBar.userInteractionEnabled = NO;
- 在ubtuntu中使用包管理器 linux-brew
用惯了mac的程序员回到linux开发平台总觉得有点不适应,这是因为linux的界面没有mac那么精美,而且linux的包管理器没有mac上面的homebrew那么强大.mac程序员遇到库的依赖问题时 ...
- 谈谈字符集编码及gb2312、utf-8编码原理
一.基础中的基础比特位即bit,是计算机最小的存储单位.以0或1来表示比特位的值.Byte是字节数,bit是位数,在计算机中每八位为一字节,也就是1Byte=8bit:Byte和bit都翻译成比特,俗 ...
- HTML5学习笔记一:与html4的区别(整合)
一 语法的改变 1.1 HTML5中标记方法 1.内容类型(ContentType):扩展符仍为“.html”或".htm",内容类型仍是“text/html”. 2.DOCTYP ...