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

 var str = "a string";
str.attr = "attr";
console.log(str); // "a string"
console.log(str.attr); // undefined

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

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

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

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

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

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

 <script type="text/javascript">
console.log("first");
function fn(){
console.log("third");
}
</script>
<body onload="fn()">
<script type="text/javascript">
console.log("second");
</script>
</body>

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

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

  - 使用包装对象.

 var s = "test";
s.len = 4;
var t = s.len;
console.log(s);
console.log(t);
/*output:
test
undefined
*/

  - 使用构造函数

 var s = "test",n = 1,b = true;
var str = new String(s);
var num = new Number(n);
var bool = new Boolean(b);
str.len = "test".length;
var t = str.len;
console.log(str);
console.log(t);
/*output:
{ [String: 'test'] len: 4 }
4
*/

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)

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

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

    -  === 恒等运算

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

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

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

10. JavaScript的类型转换.

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

 var a = 4 * "4a";//NaN
a = NaN + "4 string";//"NaN4 string"
a = 4 + "4"; //"44"
a = 4*"4"; //


-->

JavaScript 语法总结的更多相关文章

  1. JavaScript:JavaScript语法的详细介绍

    JavaScript语法:只要Java会了,基本上javascript语法就会了. ——变量的定义 ——程序的结构控制 ——数组操作 ——函数的定义即使用 基本的test.html代码如下,它会导入下 ...

  2. javascript语法详解

    javascript语法:运算符 条件语句if...else...  条件语句switch  循环语句for  循环语句while   跳转语句 js运算符 1.算数运算符:+ - * % / ++ ...

  3. When Colon Scripting is comming(JavaScript语法扩充)

    当冒号脚本来临-- JavaScript语法扩充 连续好几夜的不能安眠,得出结论就是,未来语言未来的编译器应该是支持语法定制规则和语法扩展的,这样使得编程语言不断进化以更利于人类使用!of cours ...

  4. Javascript语法基础

    Javascript语法基础   一.基本数据类型   JavaScript中支持数字.字符串和布尔值三种基本数据类型: 1.数字 数字型是JavaScript中的基本数据类型.在JavaScript ...

  5. JavaScript语法细节——引用与复制

    原文:JavaScript语法细节--引用与复制 我们都知道,JS中变量的赋值有两种方式,最近在折腾自己写的标签栏插件,碰到了很多平时没注意的问题.正好,那边处理清楚了,稍微整理一下关于引用与复制相关 ...

  6. 第九十八节,JavaScript语法、关键保留字及变量

    JavaScript语法.关键保留字及变量 学习要点: 1.语法构成 2.关键字保留字 3.变量 任何语言的核心都必然会描述这门语言最基本的工作原理.而JavaScript的语言核心就是ECMAScr ...

  7. JavaScript 语法

    一.JavaScript简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司 ...

  8. JavaScript DOM 编程艺术(1)---> JavaScript语法

    一.  JavaScript语法目录 语法 操作 条件语句 循环语句 函数 对象 二.  具体内容 2.1 语法 javaScript代码要通过HTML/XHTML文档才能执行.可以有两种方式完成这一 ...

  9. JavaScript语法详解:JS简介&变量

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. JavaScript简介 Web前端有三层: HTML:从语义的角度,描 ...

  10. 读《javascript语法精粹》知识点总结

    昨天泡了大半天的读书馆,一口气看完了<javascript语法精粹>这本书,总体来说这本书还是写的不错,难怪那么多的推荐.<javascript语法精粹>主要是归纳与总结了ja ...

随机推荐

  1. ballerina 学习二十二 弹性服务

    主要包含断路器模式,负载均衡模式,故障转移,重试 Circuit Breaker 参考代码 import ballerina/http; import ballerina/log; import ba ...

  2. Oracle按时间段分组统计

    想要按时间段分组查询,首先要了解level,connect by,oracle时间的加减. 关于level这里不多说,我只写出一个查询语句: ----level 是一个伪例 ---结果: 关于conn ...

  3. (判断)window.open()窗口被关闭后执行事件

    $(function() { // start ready var $article_share=$('#body .article').find('li.share'); // $article_s ...

  4. Accessing data in Hadoop using dplyr and SQL

    If your primary objective is to query your data in Hadoop to browse, manipulate, and extract it into ...

  5. java中的变量和常量

    也可以先声明后赋值  自动类型转换 1.  目标类型能与源类型兼容,如 double 型兼容 int 型,但是 char 型不能兼容 int 型 2.  目标类型大于源类型,如 double 类型长度 ...

  6. Log4j(1)--hellloworld

    创建项目: 使用的是log4j-1.2.17.jar: log4j.properties: log4j.rootLogger=DEBUG, Console ,File #Console log4j.a ...

  7. app测试笔记记录

    1. 個性簽名保存成功,toast提示“儲存成功” 解释:  Toast是Android中用来显示显示信息的一种机制,和Dialog不一样的是,Toast是没有焦点的,而且Toast显示的时间有限,过 ...

  8. 汇编_指令_REP MOVESB 和 CLD

    先说说MOVSB(MOVe String Byte):即字符串传送指令,这条指令按字节传送数据.通过SI和DI这两个寄存器控制字符串的源地址和目标地址,比如DS:SI这段地址的N个字节复制到ES:DI ...

  9. [Python] map Method

    Map applies a function to all the items in an input_list Blueprint map(function, list_of_inputs) Mos ...

  10. uva-10596-欧拉回路

    并不要求所有点都联通,只要出现的所有边能形成欧拉回路就行了 做成有向图的欧拉回路wa成了狗 #include <iostream> #include<memory.h> #in ...