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. 基于 jmeter 和 shell 的接口性能自动化

    jmeter+shell 1. 总体需求 由于性能测试中涉及的查询接口多,版本迭代频繁,版本更新后自动跑一轮查询业务的性能,可以及时发现一些开发修复bug触发的非预期的bug,利用晚上时间快速重测性能 ...

  2. 时间记录 APP:爱今天脑图

    时间记录 APP:爱今天脑图 爱今天 时间记录 以时间记录为主线 晨音 总结 目标 标签 统计 日统计 周统计 月统计 技能培养 一万小时定律 睡眠状态 番茄钟 时间间隔提醒 15 分钟 30 分钟 ...

  3. sublime 下面开发

    sublime 下面开发 开发 ptyon 简单环境 1. 下载sublime 3 https://download.sublimetext.com/Sublime%20Text%20Build%20 ...

  4. shell编写redis启动脚本

    ​ 安装后redis,默认系统不会自启动,如果关机或重启redis不会自行启动,linux下/etc/init.d/目录下基本上存放所有系统的大多数的启动脚本,放在这个目录下的脚本可以实现自启动操作. ...

  5. 【monkeyrunner】monkeyrunner 常见问题

    1.monkeyrunner和部分机型的指针位置会出现冲突 问题描述:当我们用monkeyrunner定位坐标时,会打开设置的指针位置服务.当指针位置开启时,运行monkeyrunner时,真机会出现 ...

  6. JS代码压缩格式化在线地址

    JS在线格式化: http://tool.oschina.net/codeformat/js JS在线压缩: http://dean.edwards.name/packer/

  7. 走迷宫(用队列bfs并输出走的路径)

    #include <iostream> #include <stack> #include <string.h> #include <stdio.h> ...

  8. charles 小米手机安装Charles证书

    1.手机Wi-Fi设置手动代理,添加IP和端口号 此处是:192.168.63.143:8888, 2.保存证书,PC端访问 chls.pro/ssl 下载pem证书,发送到手机 adb push c ...

  9. echarts地图扩展文件使用geoJson格式。

    echarts地图扩展文件使用geoJson格式. 1.在线生成 http://ecomfe.github.io/echarts-map-tool/  这里可以生成省市区的json,但是最多生成到”区 ...

  10. Oracle VM VirtualBox虚拟机安装Ubuntu Server

    安装过程如下:原文转自:http://www.linuxidc.com/Linux/2012-04/59368p8.htm