首页 > 编程语言 > 详细

JavaScript 语法总结

时间:2015-12-07 22:16:18      阅读:213      评论:0      收藏:0      [点我收藏+]

1. 不能为基本类型变量添加属性和方法. 如果添加了,那么也是undefined的.

1 var str = "a string";
2 str.attr = "attr";
3 console.log(str); // "a string"
4 console.log(str.attr); // undefined

2. 声明了但未赋值的变量和未声明的变量都不能直接用, 但是错误是不一样的.  和它们在堆区和栈区的存储有关系.

1 var t;
2 console.log(t); // undefined
3 console.log(s); // ReferenceError:s is not defined

3. 定义变量要使用var关键字, 但是没有使用var也可以赋值给一个变量名, 如: s = 10; 但是此时s不管是在局部域还是全局域里, 这个变量始终都属于 window 对象.

4. JavaScript中的变量作用域在函数体内有效,无块作用域.

1 var f = function(){
2     for(var i=0;i<n;++i){
3         console.log(i);
4     }
5     //在这里i仍然有效,作用域范围是function的.      
6 }

5. 一段代码说明HTML文档流中不同代码执行先后顺序

 1 <script type="text/javascript">  
 2 console.log("first");
 3 function fn(){
 4     console.log("third");
 5 }
 6 </script>
 7 <body onload="fn()">
 8 <script type="text/javascript">
 9     console.log("second");
10 </script>
11 </body>

  - onload()事件是最后执行的.

6. JavaScript基本类型用作包装对象时其属性都是只读的,并且不能给它们定义新的属性, 它们是有别于对象的; 不过可以通过String(),Number()或者Boolean()构造函数显示创建包装对象.

  - 使用包装对象.

1 var s = "test";
2 s.len = 4;
3 var t = s.len;
4 console.log(s);
5 console.log(t);
6 /*output:
7 test
8 undefined
9 */

  - 使用构造函数

 1 var s = "test",n = 1,b = true;
 2 var str = new String(s);
 3 var num = new Number(n);
 4 var bool = new Boolean(b);
 5 str.len = "test".length;
 6 var t = str.len;
 7 console.log(str);
 8 console.log(t);
 9 /*output:
10 { [String: ‘test‘] len: 4 }
11 4
12 */

7. null和undefined比较

  undefined可以理解为一块荒地,里面有杂草,石头和各种垃圾, 不能直接耕种, 而null就相当于除草,捡出石头和垃圾, 让这块荒地变得可以耕种, 本质上来说是内存的两种不同的状态. 

  -  typeof(null); //"object"  特殊的对象, 含义是"非对象"(或指向空对象), 也可以表示基本类型的变量是无值的, 但是如果将它赋给基本类型变量, 则变量也类型转换成了object类型了.

  -  typeof(undefined); //"undefined"   预定义的全局变量,undefined在ECMAScript3中是W/R的, 在ECMAScript5中的Read-only的.

    - 是变量的一种取值, 表明变量没有初始化.

    - 如果查询对象属性或者数组元素的值时返回undefined, 则说明这个属性或元素不存在(如果要删除某对象的某个属性, 直接赋为undefined即可.).

    - 如果函数没有返回任何值, 则返回undefined.

    - 引用没有提供实参的函数形参的值也只会得到undefined.

  - 比较:

    - null 和 undefined本质是不同的, 但是往往可以互换,(1) null == undefined, null !== undefined; (2) 希望是布尔类型的地方它们都是false, null和undefined都不包含任何属性和方法; (3) 如果想赋给变量或者属性, 或者将它们作为参数传入函数, 最好用null.

8. 数组和函数在js里面是对象, 而且函数是一等对象(first class).

9. 对象的比较.(以下比较结果全为false)

1 var a = [1,2,3,4];
2 var b = [1,2,3,4];
3 console.log(a==b);
4 console.log(a===b);//两个单独的数组永不相等
5 var c = {x:1};
6 var d = {x:1};
7 console.log(c==d);
8 console.log(c===d);//两个单独的对象永不相等

  - 不等是因为对象是保存的引用.

    -  === 恒等运算

      - true = (值类型相同) && (都不是null或者undefined或者NaN) && (值相同)   else false

1 var a = NaN;
2 var b = NaN;
3 console.log(a===b);//换成null 和 undefined时恒等.
4 /*false*/

    -  == 在比较前会先进行类型转换, 转换原则与C语言转换很相似, 对象的转换先尝试用valueOf(),再尝试用toString()转换为原始值再进行比较(日期类只使用toString()转换). 不是JavaScript语言核心中的对象则通过各自的实现中定义的方法转换为原始值.

10. JavaScript的类型转换.

  - 非常灵活, 主要还是根据上下文, 比如一个数字算术运算一个字符串, 会尝试将字符串转换成数字(注意: "4a"=>NaN). 如果是一个NaN+"string", 那么就会变成 "NaN string".

1 var a = 4 * "4a";//NaN
2 a = NaN + "4 string";//"NaN4 string"
3 a = 4 + "4"; //"44"
4 a = 4*"4"; //16

 

JavaScript 语法总结

原文:http://www.cnblogs.com/roger9567/p/5011677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!