1 javascript 核心语言笔记

时间:2021-07-23 09:05:13
 //所有的双斜线之后的内容都属于注释;
//变量是表示值的一个符号名字;
//变量是通过var 关键字声明的;
var x; //声明一个变量
//值可以通过等号赋值给变量
x = 0; //现在的变量x的值为0
x //=> 0:通过变量获取其值
//javascript 支持多种数据类型
x = 1; // 数字
x = 0.01; // 整数与实数共用一种数据类型
x = "hello world"; // 由双引号内的文本构成的字符串
x = 'javascript'; // 由单引号内的文本同样构成字符串
x = true; // 布尔值 真
x = false; // 布尔值 假
x = null; // null 是一个特殊的值 ”空“
x = undefined;// undefined 和null 非常类似

javascript中两个非常重要的数据类型是对象和数组

  //javascript中最重要的类型就是对象
//对象是名/值对的集合,或字符串到值映射的集合
var book = {
topic: 'javascript',
fat: true
};
//通过“. ”或“[]”来访问对象属性
book.topic // => javascript
book["fat"] // =>返回的是true 另外一种获取属性的方式
book.author = "flanagan"; //通过赋值来创建一个属性
book.contents = {}; //{} 是一个空对象没有属性 //javascript同样支持数组 (以数字为索引的列表)
var primes =[2,3,5,7]; //拥有4个值的数组,由“”["和"]“”划定边界
primes[0]; //=>2:数组中的第一个元素(索引为0)
primes.length; //=> 4 :数组中的个数
primes[primes.length-1] //=> 7:数组的最后一个元素
primes[4] = 9; //通过赋值来添加新元素
primes[4] = 11; //通过赋值来改变已有的元素
var empty = []; // []空数组,它具有0个元素
empty.length //=>0
//数组和对象中都可以包含另一个数组或者对象:
var points =[
{x:0,y:0}, //具有两个元素的数组
{x:1,y:1} //每个元素都是一个对象
]; var data ={ //一个包含两个属性的对象
trial1: [[1,2],[3,4]], //每一个属性都是数组
trial2: [[2,3],[4,5]] //数组的元素也是数组
};

javascript中常见的表达式写法像下面代码这样使用运算符(operator):

 //运算符作用于操作数,生成一个新的值
//最常见的算术运算符
3 + 2 // =>5 : 加法
3 - 2 // =>1 : j减法
3*2 // =>6 : 乘法
3/2 // => 1.5 : 除法
points[1].x - points[0].x // => 1 : 更复杂的操作数也能照常工作
"3" + "2" // => "32": + 可以完成加法运算也可以作字符串连接 //javascript 定义了一些运算符的简写形式 var count = 0; //定义了一个变量
count++; //自增1
count--; //自减1
count += 2; //自增2: 和“count = count + 2;” 写法一样
count *= 3; //自乘3: 和“count = count *3;”写法一样
count // =>6: 变量名本身也是一个表达式
     //相等关系运算符用来判断两值是否相等
//不等 、大于、小于运算符的结果是true或false
var x = 2, y = 3; //这里的 = 等号是赋值的意思,不是比较相等
x == y //=> false :相等
x != y //=> true :不等
x < y //=>true :小于
x <= y //true :小于等于
x > y //=>false :大于
x >= y //=>false :大于等于
"two" == "three" //=>false :两个字符串不相等
"two" > "three" //=>true :"tw"在字母表中的索引大于"th"
false == (x > y) //=>true :false和false 相等 //逻辑运算符是对布尔值的合并或求反
(x == 2) && (y == 3) //=> true :两个比较都是true, &&表示"与"
(x > 3) || (y <) //=> false :两个比较都不是true, ||表示"或"
!(x == y) //=> true : !求反 //函数是带有名称(named)和参数的javascript代码段,可以一次定义多次调用 function plus1(x){ //定义了名为plus1的一个函数,带有参数的x
return x +1 //返回一个比传入的参数大的值
} // 函数的代码块有花括号包裹起来的部分
plus1(y) //=> 4 :y为3,调用函数的结果为3+1
var square = function(){ //函数是一种值,可以复制给变量
return x*x //计算函数的值
}; //分号标示了赋值语句的结束
square(plus1(y)) // => 16 :在一个表达式中的调用两个函数

//当将函数和对象合写在一起时,函数就变成了“方法”(method):

 //当函数赋值给对象的属性,我们称为“方法”,所有的javascript对象都含有方法
var a =[]; //创建一个空数组
a.push(1,2,3); //push()方法向数组中添加元素
a.reverse(); //另一个方法 reverse() 将数组元素的次序反转
//我们也可以定义自己的方法 “this”关键字是对定义的方法的对象的引用
points.dist=function(){ //定义一个方法用来计算两点之间的距离
var p1=this[0]; //通过this 获得对当前数组的引用
var p2=this[1]; //并取得调用的数组前两个元素
var a = p2.x-p1.x; //x坐标轴上的距离
var b = p2.y-o1.y; //y坐标轴上的距离
return Math.sqrt(a*a + b*b) //勾股定理 用Math.sqrt()来计算平方根
};
points.dist(); //=> 1.44 求得两点之间的距离 // 这些javascript语句使用该语法包含条件判断和循环
function abs(x) { //球绝对值函数
if(x>=0){ //if语句
return x; //如果为true则执行这里的代码
}else{ //if条件不满足时执行else语句
return -x;
}
} function factorial(n) { //计算阶乘函数
var product=1; //product赋值为1
while(n>1){ //当n大于1时执行花括号语句
product *=n; //product*=n 是 product= produtct*n的简写形式
n--; //n--;是 n=n-1的简写形式
}
return product; //返回product
}
factorial(4); //=>24: 1*4*3*2 function factorial2(n) { //实现循环的另一种函数写法
var i,product =1; //product赋值为1
for(i=2;i<n;i++){ //将i从2自增到n;
product *=i; //循环体,当循环只有一句话可以省略{};
return product;
} }
factorial2(5); //=> 120 : 1*2*3*4*5; //javascript是一种面向对象的编程语言
//定义一个构造函数以及初始化一个新的point对象
function Point(x,y) { //按照惯例,构造函数均已大写字母开始
this.x=x; //关键字this指代初始化的实例
this.y=y; //将函数参数储存为对象的属性 } var p= new Point(1,1); //使用new关键字和构造函数来创建一个实例
Point.prototype.r =function() { //通过给构造函数的prototype对象赋值来给point对象定义方法
return Math.sqrt(
this.x*this.x+this.y*this.y;
)
};
// point实例对象p(以及所有的point实例对象)继承了方法 r()
p.r(); //=>1.414...