JavaScript 语法总结
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 语法总结的更多相关文章
- JavaScript:JavaScript语法的详细介绍
JavaScript语法:只要Java会了,基本上javascript语法就会了. ——变量的定义 ——程序的结构控制 ——数组操作 ——函数的定义即使用 基本的test.html代码如下,它会导入下 ...
- javascript语法详解
javascript语法:运算符 条件语句if...else... 条件语句switch 循环语句for 循环语句while 跳转语句 js运算符 1.算数运算符:+ - * % / ++ ...
- When Colon Scripting is comming(JavaScript语法扩充)
当冒号脚本来临-- JavaScript语法扩充 连续好几夜的不能安眠,得出结论就是,未来语言未来的编译器应该是支持语法定制规则和语法扩展的,这样使得编程语言不断进化以更利于人类使用!of cours ...
- Javascript语法基础
Javascript语法基础 一.基本数据类型 JavaScript中支持数字.字符串和布尔值三种基本数据类型: 1.数字 数字型是JavaScript中的基本数据类型.在JavaScript ...
- JavaScript语法细节——引用与复制
原文:JavaScript语法细节--引用与复制 我们都知道,JS中变量的赋值有两种方式,最近在折腾自己写的标签栏插件,碰到了很多平时没注意的问题.正好,那边处理清楚了,稍微整理一下关于引用与复制相关 ...
- 第九十八节,JavaScript语法、关键保留字及变量
JavaScript语法.关键保留字及变量 学习要点: 1.语法构成 2.关键字保留字 3.变量 任何语言的核心都必然会描述这门语言最基本的工作原理.而JavaScript的语言核心就是ECMAScr ...
- JavaScript 语法
一.JavaScript简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司 ...
- JavaScript DOM 编程艺术(1)---> JavaScript语法
一. JavaScript语法目录 语法 操作 条件语句 循环语句 函数 对象 二. 具体内容 2.1 语法 javaScript代码要通过HTML/XHTML文档才能执行.可以有两种方式完成这一 ...
- JavaScript语法详解:JS简介&变量
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. JavaScript简介 Web前端有三层: HTML:从语义的角度,描 ...
- 读《javascript语法精粹》知识点总结
昨天泡了大半天的读书馆,一口气看完了<javascript语法精粹>这本书,总体来说这本书还是写的不错,难怪那么多的推荐.<javascript语法精粹>主要是归纳与总结了ja ...
随机推荐
- TypeScript学习笔记(六) - 模块
本篇将介绍TypeScript里的模块,和使用方法. 在ECMAScript 2015标准里,JavaScript新增了模块的概念.TypeScript也沿用了这个概念. 一.模块的导入和导出 模块在 ...
- Mybatis 全局配置文件中typeAliases(别名)
在具体的mapper.xml文件中,定义很多的statement,statement需要parameterType指定输入参数的类型.需要resultType指定输出结果的映射类型. 如果在指定类型时 ...
- C#细说多线程(上)
本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发.其中委托的BeginInvoke方法以及回调函数最为常用.而 I/O线程可能容易遭 ...
- 正则,以“this.Name”开头,以“;”结尾
string regex="this\\.Name(.*?);"; string regex="this\\.Name(.*?);"; 以size开头,以数字结 ...
- bzoj2783 树
第一行是两个整数N和S,其中N是树的节点数. 第二行是N个正整数,第i个整数表示节点i的正整数. 接下来的N-1行每行是2个整数x和y,表示y是x的儿子. 输出格式: 输出路径节点总和为S的路径数量. ...
- ElasticSearch 基础概念学习(未完)
1.基本定义 摘自百度百科 elasticseaElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elastic ...
- python博客
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
- php接收base64编码的文件内容并保存
<?php header('Content-type:text/html;charset=utf-8'); //读取图片文件,转换成base64编码格式 $image_file = './fac ...
- 温故而知新-strtok函数
温故而知新-strtok函数 记得之前没见过这个函数,是把字符串分割成更小的字符串 来个例子就是比较鲜明了 $string = "Hello world. Beautiful day tod ...
- echart改变legend样式及分页
legend: { type: 'scroll', orient: 'horizontal', bottom:0, left:'center', itemGap: 0, itemWidth: 10, ...