JavaScript学习笔记

原创 2015年11月18日 00:30:26
1区分大小写
2支持两种格式的注释

//这里是单行注释
/*
*这里是一段注释
*/
3标识符
标识符用来对变量和函数进行命名,或者用做JavaScript代码中某些循环语句中的跳转位置的标记。标识符必须以字母、下划线(_)或美元符($)开始。后续的字符可以是字母、数字、下划线或美元符:
i
my_variable_name
v13
_dummy
$str
4可选的分号(;)分隔
如果语句各自独占一行,通常可以省略语句之间的分号,但建议时刻使用分号分隔。
5类型、值和变量
JavaScript数据类型分为两种:原始类型(primitive type)和对象类型(object type).
JavaScript中除了数字、字符串、布尔值、null和undefined之外的就是对象了。
JavaScript变量是无类型的(untyped),变量可以被赋予任何类型的值,同样一个变量也可以重新赋予不同类型的值。
var a;  //声明变量
JavaScript采用词法作用域(lexical scoping)。不在任何函数内声明的变量称做全局变量(global variable),它在JavaScript程序任何地方都可见。在函数内声明的变量具有函数作用域(function scope),并且只在函数内可见。
6字符串的使用
JavaScript字符串(和其数组)的索引从零开始:第一个字符的位置是0,第二个字符的位置是1,以此类推。空字符串(empty string)长度为0,JavaScript中没有表示单个字符的“字符型”。
字符串由单引号或双引号包含:
""  //空字符串,它包含0个字符
'testing'
'name = "myName"'
"say 'hello'"

var s = "Hello," + "world!";  //连接两个字符串
s.charAt(0) // => "H",第一个字符,等同于 s[0]
s.charAt(s.length - 1) // =>"!",最后一个字符
s.substring(1,4)  // =>"ell",第2~4个字符
s.slice(1,4)  // =>"ell",同上
s.slice(-3)   // =>"ld!",最后三个字符
s.indexOf("l") // =>2,字符l首次出现的位置
s.lastIndexOf("l") // =>10,字符l最后一次出现的位置
s.indexOf("l", 3) // =>3,在位置3及之后首次出现字符l的位置
s.split(",")   // =>["Hello", "world"]分割成子串
s.replace("H", "h") // =>"hello,world!",全文字符替换
s.toUpperCase()  // =>"HELLO,WORLD!",全文大写
(记住,在JavaScript中字符串是固定不变的,类似replace()和toUpperCase()的方法都返回新字符串,原字符串本身并没有改变)
7null和undefined
null是JavaScript语言的关键字,它表示一个特殊的值,用来描述“空值”。对null执行typeof运算,结果为“object”,可将null认为是一个特殊的对象值,含义是“非对象”。
undefined也表示值的空缺。它是变量的一种取值,表明变量没有初始化,如果查询对象属性或数组元素的值时返回undefined则说明这个属性或元素不存在。
undefined是预定义的全局变量(它和null不一样,它不是关键字),它的值就是“未定义”。
8类型转换
Number("3")  // => 3
String(false) // => "false",等效于false.toString()
Boolean([])   // => true
Object(3) // => new Number(3)
(注意,除了null和undefined之外的任何值都具有toString()方法)
9函数作用域和声明提前
function test(o){
    var i = 0; //i在整个函数体内均是有定义的
if(typeof o == "object"){
   var j = 0; //j在函数体内是有定义的,不仅仅是在这个代码段内
for(var k = 0; k < 10; k++){ //k在函数体内是有定义的,不仅仅是在循环内
   console.log(k); //输出数字0~9
}
console.log(k); //k已经定义了,输出10
}
console.log(j); //j已经定义了,但可能没有初始化
}
JavaScript的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的。这意味着变量在声明之前甚至已经可用。JavaScript这个特性被非正式地称为声明提前(hoisting),即JavaScript函数里声明的所有变量都被“提前”至函数体的顶部。
var scope = "global";
function f(){
console.log(scope); //输出undefined而不是"global"
var scope = "local"; //变量在这里赋初始值,但变量本身在函数体内任何地方均是有定义的
console.log(scope); //输出"local"
}
上述代码等价于:
var scope = "global";
function f(){
var scope;
console.log(scope);
scope = "local";
console.log(scope);
}
10对象和数组的初始化表达式
数组初始化表达式通过[]和其内逗号隔开的列表构成:
[]  //一个空数组
[1+2, 3+4] //拥有两个元素的数组,第一个是3,第二个是7
[1,,,,5]  //省略的空位会填充值undefined
对象初始化表达式:
var p = {x:2.3, y:0.2}; //一个拥有两个属性成员的对象
var q = {}; //一个空对象
q.x = 2.3; q.y = 0.2;  //q的属性成员和p的一样
var rectangle = {upperLeft:{x:2, y:2}, lowerRight:{x:4, y:5}};
11函数定义表达式
函数声明语句的语法如下:
function funcname([arg1[,arg2[...,argn]]]){ statements}
下述两种方式都是可以的:
var square = function(x) { return x*x; } //将表达式赋值给一个变量
function square(x) { return x*x; }  //含有变量名的语句
12==,!=,===,!==
== :判断相等
!= : 判断不等
=== : 判断恒等
!== : 判断非恒等
13in,instanceof,typeof,delete
var point = {x:1, y:1};
"x" in point // =>true,对象有一个名为"x"的属性
delete point.x; // 删除一个属性
"x" in point    // =>false,这个属性在对象中不再存在
var a = [1,2,3];
delete a[2]; //删除最后一个数组元素
2 in a       // =>false,元素2在数组中已经不存在了
a.length     // =>3,数组长度并没有改变,尽管上一行代码删除了这个元素
            //但删除操作留下一个“洞”,实际上并没有修改数组的长度
var d = new Date();
d instanceof Date // =>true,d是由Date()创建的
typeof null // =>"object"
typeof true // => "boolean"
typeof "test" // => "string"

相关文章推荐

javascript学习笔记2

  • 2017年07月31日 00:43
  • 3KB
  • 下载

javascript经典学习笔记

  • 2008年12月01日 17:21
  • 727KB
  • 下载

Java程序员的JavaScript学习笔记(13—— jQuery UI)

EasyUI是jQuery的一个常用扩展,解决页面组件的问题,实现了可拖拽组件、功能更丰富的下拉框、日期组件、表格组件等。 今天我们尝试,通过分析Easyui的模块化设计、接口风格、实现细节,来探索我...

JavaScript学习笔记.pdf

  • 2012年09月28日 18:33
  • 8.79MB
  • 下载

javascript学习笔记发放1

  • 2008年11月19日 15:19
  • 63KB
  • 下载

JavaScript学习笔记8-jQuery基本过滤选择器深度解析

过滤选择器 (filter) –基本过滤 –内容过滤 –可见性过滤 –属性过滤 –子元素过滤 –表单对象属性过滤 基本过滤选择器 New Do...

JavaScript学习笔记

  • 2016年12月05日 09:10
  • 452KB
  • 下载

JavaScript学习笔记

  • 2016年08月05日 23:09
  • 2.56MB
  • 下载

Box2d的javascript版本Box2dWeb-2.1a.3学习笔记(一)

Box2d是一个物理引擎框架可以制作2D动画模拟真实物理环境,可以在HTML5的canvas中实现动画效果(但更好的完成这点需要借助别的技术,后面会说到,但其内置的debugDraw可以生成简单的视图...

html+javascript+css学习笔记

  • 2014年07月03日 22:16
  • 36KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript学习笔记
举报原因:
原因补充:

(最多只允许输入30个字)