今天刚刚开始学JavaScript,语言基本上都是大同小异。学会了一门语言之后,学另一门语言就觉得比较好入门了。
JavaScript是由Web发展初期的网景(Netscape)公司创建,“JavaScript”是Sun Microsystem公司(现在Oracle)的注册商标,用来特指网景(现在Mozilla)对这门语言的实现。网景将这门语言作为标准提交给了ECMA---欧洲计算机制造协会---由于商标上的冲突,这们语言的标准版本改了一个丑陋的名字“ECMAScript”.同样由于商标的冲突,微软对这门语言的实现版本取了一个广为人知的名字“JScript”。实际上,几乎所有人都将这们语言叫做“JavaScript”。
在最近10年间,所有的Web浏览器都实现了第3版ECMAScript标准,我们也已经不必再考虑版本号了:语言标准已经很稳定了,并且被几乎所有的浏览器完整的实现了。最近ECMAScript第五版本定义了新的语言标准,有的浏览器已经开始实现它了。正如我们经常将JavaScript简写成JS一样,ECMAScript3和ECMAScript5有时也会简写成ES3和 ES5。
当我们提到这门语言本身时,通常所指的语言版本是ECMAScript3和ECMAScript5(ECMAScript4已经开发了数年,但由于太过庞大,从未发布正式版本),有时会看到JavaScript的版本号(比如JavaScript1.5或JavaScript1.8)。这些是Mozilla的版本号:版本1.5基本上就是ECMAScript3,后续版本包含了非标准的语言扩展。最后,JavaScript解释权或者“引擎”也有版本号,比如,Google将它的JavaScript解释权叫做V8。
上面是我看到一个比较好的介绍,粘贴过来的。
昨天晚上整理了一天博文之后,太晚了,就没有写总结,以后不能这样了。
昨天主要学习了 JS 的 变量、数据类型、数据类型转换、变量的作用域、运算符、以及流程控制语句。
一、变量
1、在js中可以用 var 来声明一个变量,可以出现在任何位置,变量声明后才可以使用,不过不声明也可以直接使用,只是这样不符合逻辑。
var a = 12; //声明时,直接赋值
var b;
b = 34; //先声明,后赋值,若不赋值,会提示 undefined
c = 56; //不声明,直接赋值使用
上面的声明效果都是相同的。
2、在JS中出创建变量通常叫做声明变量。
3、重新声明了同一个变量,如果不赋值,则它的值不会变,例如:
var a = 10;
var a;
console.log(a); // 会打印出 10
注意:
1、JS区分大小写,与Java相同。
2、JS支持两种注释, // 和 /* */
二、数据类型
对于JavaScript的变量来说是没有类型的,变量的类型是由它的值所决定的。
例如: var a = 10; // 变量类型为 数值型 number
var b = 1.2; //变量类型为 数值型 number
var c = true; //变量类型为 布尔型 boolean
var d = "abc"; // 字符串类型 String
var e = ‘def‘; //字符串类型 String
var f = null; // null类型
var g = Object; // Object类型
JavaScript的数据类型分为两类: 原始类型 和 对象类型
原始类型:数字,字符串,布尔值,null,undefined。
对象类型:除了原始类型以外的类型都是对象类型,比如Array数组类型,Object类型。
1、JavaScript的数据类型主要有一下几种:
字符串 String
数值 number
布尔 boolean
数组 Array
对象 Object
空 null
未定义 undefined
引用 reference
完成 completion
后三种仅仅作为JavaScript运行时中间结果的数据类型,不能在代码中使用。
小技巧之:typeof()函数
可以使用typeof() 函数来查看变量的数据类型。
var a = 11;
console.log(typeof(a)); // 打印出 number
2、字符串类型 string
单引号 或者 双引号 括起来的字符序列。
var a = "hello";
var b = ‘world‘;
3、数值类型 number
包括 整数 和 小数
var a = 12;
var b = 34.56;
特殊的值:
1、NaN (not a number) 非数字
parseInt()函数,不能解析指定的字符串时就返回这个值,如:
var a = "abc";
var b = parseInt(a);
console.log(b); //打印出 NaN
可以用isNaN()函数,来判断一个是否不是一个数字。
var a = "abc";
console.log(isNaN(a)); //打印 true,说明a不是一个数字。
也可以用这个函数来判断是否是一个数字
var arr = [12,"hello"];
for( var i=0; i<arr.length; i++){
if( !isNaN(arr[i]) ){
console.log(arr[i]);
}
}
注意:
NaN与所有的值都不相等,包括它自己。
var a = NaN;
console.log(a==a); //打印false
2、 infinity 和 -infinity
无穷大 负的无穷大
JavaScript中的算术运算在溢出或者被 0 整除时不会报错。
当运算结果超出JavaScript所能表示的数字上限结果为 infinity;同样,负数超过了JavaScript所能表示的负数最大范围时为 -infinity。
4、布尔类型 boolean
与Java使用方法相同,有两个值,true or false
5、数组类型 Array
这个类型以后再学,有一个专门的Array对象。那时候再细细学习。
三、数据类型的转换
1、到Boolean类型的转换 new Boolean(value)
undefined、null、number为0、String为空 这时候转化为 false
number为非0、String为非空、Object 这时候转化为 true
2、到数字类型的转换 new Number(value)
undefined ----- NaN
null ----- 0
true ----- 1
false ----- 0
String 如果字符串时一串数字,则可以转化为数字,如果包含字母,则转化为NaN
3、到字符串类型的转化 new String(value)
undefined ---- "undefined"
null ---- "null"
Boolean ---- "true" "false"
Number ---- 具体的数字值, "123"
四、变量的作用域
一个变量的作用域是程序源代码定义这个变量的区域。 全局变量拥有全局作用域,在JavaScript中的任何地方都是可以定义的。然后函数内部声明的变量只在函数体内部定义,他们是局部变量,作用域有局限性,函数参数也是局部变量,他们只在函数体内有效。函数体内,局部变量的优先级高于全局变量。
var a = 12;
function f(){
var b = 34;
return b;
}
console.log(f());
尽管在声明全局变量的时候可以不用var,但是在声明局部变量的时候,必须用var!
JavaScript与Java的区别就是JavaScript中有函数作用域,Java中是块级作用域。
function f(a){
var i = 10;
if(a<10){
var k = 10;
for( var j=0; j<10; j++ ){
var h = 12;
}
}
console.log(i);
console.log(a);
console.log(k);
console.log(j);
console.log(h);
}
f(5); //打印结果10 5 10 10 12
JavaScript的函数作用域是指在函数内声明的所用变量在函数体内始终是可见的。有意思的是,这意味着变量在声明之前甚至可以用了。JavaScript的这种特征被非正式的称为声明提前,即JavaScript函数声明的所有变量都被提前至函数体的顶部。
附加:
1、 function f(){
vara = 1111;
b= 2222;
console.log(a);
}
f();
console.log(b);
上面例子,如果去掉了执行f() 函数,则console.log(b) 会报错。只有执行了f() 函数之后,全局变量b才会在程序中找到。
2、javaScript变量的作用于Java不同,在一个函数中定义了一个局部变量(包括在这个函数的嵌套函数内定义的),则在整个函数以及这个函数的嵌套函数(内部函数)。
五、运算符
和Java基本一样
多了几个:
1、恒等于 (严格比较,不会发生数据的转换)
2 == "2" //true
2 === "2" //false
2、逗号表达式
这个没怎么搞懂,试验了几次,总是报错,希望大神们,评论一下。
3、算数运算符
+ - * / % ++ --
4、赋值运算符
= += -= /= *= %=
5、用于字符串的 + 运算符
+ 运算符用于把文本值或者字符串变量连起来。
如: var a = "hello"; var b = "world"; var c = a + b; //c="helloworld";
6、如果把数字和字符串用 + 连接,则结果为字符串,数字与数字+操作,结果相加。
7、逻辑运算符 && & || |
与Java相同。
8、三目运算符 ? :
表达式 ? result1 : result2
如果表达式为true,则结果为result1,否则为result2
var a = 3>5? true:false;
console.log(a); //打印 false
注意:JavaScript语句可以没有,但是为了便于阅读,一般用分号来作为一条语句的结束。
六、流程控制语句
if...
if...else...
if...else if...else...
switch...case...
for
for in
while
do...while
break
continue
上面的流程控制语句使用情况,与Java一样。
昨天晚上大体就学了这些。后面还会继续总结。