JavaScript学习笔记

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"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值