JS-严格模式、关键字和保留字、var操作符、数据类型

严格模式

  • 严格模式是为JavaScript定义了一种不同的解析与执行模型。在严格模式下,ECMAScript3中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出异常。
  • 支持严格模式的浏览器: IE 10+、Firefox 4+、Safari 5.1+、Opera12+和Chrome。
/*使用严格模式,可以在顶部添加以下代码*/
" use strict";

/*在函数体内部的上方包含这条编译指令,也可以指定函数在严格模式下执行*/
function doSomething() {
  " use strict";
  //函数体
}

JavaScript关键字和保留字

  • 关键字和保留字不能被作为标识符。
/*关键字*/
break 
case catch continue 
do debugger default delete
else
for finally function
if in instanceof
new
return
switch
this throw try typeof
var void
while with
/*保留字*/
abstract
boolean byte 
char class const 
debugger double
enum export extends 
final float 
goto
implements import int interface
long let
native 
package private protected public
short static super synchronized
throws transient
volatile
yield

var操作符

  • var操作符定义变量。
/*可以只定义一个变量不赋值,此时的变量为undefined*/
var message;

/*定义变量的同时赋值*/
 var message = "hi"; //赋给变量message一个字符串
  • 在函数中定义变量时要注意变量的作用域。
fuction test() {
  var message = "hi"; //在函数体内使用var定义的变量为局部变量
}
test();
alert(message); //此时会报错,因为局部变量在test函数退出后就会被销毁

/*这里可以省略var操作符使message变量变为全局变量,但不推荐使用,因为在局部作用域中定义的全局变量很难维护,有意的省略var操作符,也会由于相应变量不会马上就有定义二导致不必要的混乱。给未经声明的变量赋值在严格模式下会导致抛出ReferanceError错误。*/
  • 使用一条语句定义多个变量,中间用逗号隔开。
var message = "hi",
      found = "false",
      age = 29;
  • 在严格模式下,不能定义名为eval或arguments的变量,否则会导致语法错误。

JavaScript数据类型--使用typeof操作符可以检测变量的数据类型

  • Undefined类型
    Undefined类型只有一个值,即特殊的undefined。
var message
alert (message == undefined);//true
alert(typeof message) ; //undefined
/*此处声明了变量message,但未对齐赋值,所以message的值为undefined*/

/*此处还应注意,对于没有声明的变量只能使用typeof操作符检测其数据类型*/
// var age; 
alert(age); //报错,因为age没有被声明
alert(typeof age);  //undefined
  • Null类型
/*从逻辑上看,null值表示一个空对象指针,使用typeof操作符检测null值会返回“object”*/
var car = null;
alert(typeof car);  //object

/*如果想要定义一个变量来保存对象,最好将该变量初始化为null,这样可以直接检查null值就可以知道相应变量是否已经保存了一个对象的引用*/
if (car != null) {
  //对car对象执行某些操作
}
  • Boolean类型
    该类型只有true和false两个字面值,区分大小写。
  • Number类型
/*十进制*/
var intNum = 55; //整数

/*
八进制
第一位必须是0,如果字面值中的数值超出了范围,那么前导零被忽略,后面的的数值将会被当作十进制解析
八进制字面量在严格模式下是无效的,会导致支持该模式的JavaScript引擎抛出错误
*/
var octalNum1 = 070;  //八进制56
var octalNum2 = 079;  //无效的八进制数值,解析为79

/*
十六进制
十六进制字面值的前两位必须是0x,后跟任何十六进制数字(0~9及A~F),字母不区分大小写
*/
var hexNum1 = 0xA;  //十六进制的10

/*
浮点数值
该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字
*/
var floatNum1 = 1.1;
var floatNum2 = 3.125e7;  //等于31250000

/*
数值范围: 5e~1.7976931348623157e+308
如果某次计算的结果超出了这个范围,将会被转换成-Infinity或Infinity,不会参与下一次计算
可以使用isFinite()函数检测一个属是不是有穷的,这个函数的参数位于最小与最大数值之间时会返回true
*/
var result = Number.MAX_VALUE + Number.MAX_VALUE;
alert(isFinite(result));  //false

/*
NaN
用于表示一个本来要返回数值的操作数未返回值的情况,这样就不会抛出错误
*/
alert(NaN/10);   //NaN,任何涉及NaN的操作都会返回NaN
alert( NaN == NaN);  //false,NaN和任何值都不等,包括其本身
alert(isNaN(NaN)); //true,isNaN()函数接受一个参数,可检测该参数是否“不是数值”
alert(isNaN(10));  //false(10是一个数值)
alert(isNaN(“10”));  //false(可以被转换成数值10)
alert(isNaN(“blue”));  //true(不能被转换成数值)
alert(isNaN(true));  //false(可以被转换成数值1)
/*因此,在调用isNaN()函数时,会先调用对象的valueOf()方法,确定该方法返回的值是否可以转化成数值,如果不能,则基于这个返回值再调用toString()方法,再测试返回值*/

/*
数值转换
有三个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()
*/
var num1 = Number("Hello World");  //NaN
var num2 = Number("");  //0
var num3 = Number("000011");  //11
var num4 = Number(true);  //1

var num1 = parseInt("1234blue");  //1234
var num2 = parseInt("");  //NaN
var num3 = parseInt("0xA");  //10(十六进制)
var num4 = parseInt(22.5);  //22
var num5 = parseInt("070");  //56(八进制)
var num6 = parseInt("70");  //70(十进制)

var num1 = parseFloat("1234blue");  //1234
var num2 = parseFloat("0908.5");  //908.5
var num3 = parseFloat("0xA");  //0
var num4 = parseFloat(22.5);  //22.5
var num5 = parseFloat("22.34.5");  22.34
var num6 = parseFloat("3.125e7");  //31250000
  • String类型
    String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串,可以用双引号(“)或单引号(‘)表示。
/*字符字面量*/
\n  //换行
\t  //制表
\b  //退格
\r  //回车
\f  //进纸
\\  //斜杠
\'  //单引号('),在用单引号次奥是的字符串中使用
\\"  //双引号("),在用双引号次奥是的字符串中使用
\xnn  //以十六进制代码nn表示的一个字符(其中n为0~F)。例如,\x41表示“A”
\unnn  //以十六进制代码nnnn表示的一个Unicode字符(其中n为0~F)。例如 ,\u03a3表示希腊字符Σ

/*
字符串的特点
字符串一旦创建,它们的值就不能改变,要改变某个变量保存的字符串,首席按要销毁原来的字符串,然后再用一个包含新值的字符串填充该变量
*/
var lang = "Java";
lang = lang + "Script";
alert(lang);  //JavaScript

/*转换为字符串toString()方法和Sting()方法*/
var age  = 11;
var ageString = age.toString();  //字符串“11”
var found = true;
var foundString = found.toString();  //字符串“true”

/*在不知道要转换的值是不是null或undefined的情况下可以使用String()方法*/
var value1 = 10;
var value2 = true;
var value3 = null;
var value4;
alert(String(value1 ));  //"10"
alert(String(value2 ));  //"true"
alert(String(value3 ));  //"null"
alert(String(value4 ));  //"undefined"
  • Object类型
/*创建自定义对象*/
var 0 = new Object();

/*Object的每个实例都具有以下属性和方法*/
constructor  //保存用于创建当前对象的函数。对于当前例子而言,构造函数就是Object()。
hasOwnProperty(propertyName)  //用于检查给定的属性当前对象实例中是否存在。作为参数的属性名必须以字符串形式指定。
isPrototypeOf(object)  //用于检查传入的对象是否是当前对象的原型。
propertyIsEnumerable(propertyName)  //用于检查给定的属性是否能够使用for-in语句来枚举。与hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。
toLocalString  //返回对象的字符串表示,该字符串与执行环境的地区对应。
toString  //返回对象的字符串表示。
valueOf  //返回对象的字符串、数值或布尔值类型。通常与toString()方法的返回值相同。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343