JavaScript学习

JavaScript是一种脚本语言与Java没有本质联系

1.变量

Java是弱类型语言,变量不用声明也能使用,可以使用var来声明变量。

var a ="变量a";

JavaScript中数据的运算有自动的类型转换:
1.对于减法运算符,因为字符串不支持减法运算,所以系统会自动将字符串转换成数值。(但是如果字符串不是数字的话将会被转化为NaN)

var a ="3.14"
var b =1;
var c = a-b;                           //c的值将为2.14

2.对于加法运算,因为字符串可以进行加法运算,所以系统会自动将数值转化为字符串。

var a ="3.14";
var b =1;
var c =a+b;                          //c的值将为“3.141”

JavaScript提供三个函数进行强制类型转换:
toString( a ):将布尔值、数值转换为字符串。
parseInt( a ):将布尔值、字符串转换为数值。
parseFloat( a ):将字符串、布尔值转换成浮点数。

2.变量作用域

不使用var定义的是全局变量。
不在方法里定义的是全局变量。
在方法里定义并且使用var定义的是局部变量
方法里的变量要调用了方法之后才能使用。
JavaScript里的变量没有块的范围。
同理,在函数内定义的函数称为局部函数,局部函数只能在定义的函数内使用。

function test(){
    for(var i=0;i<10;i++){
    }
    alert(i);          //i出了for循环一样可以使用,不过这里的i是局部变量,只能在方法内使用
}

如果局部变量和全局变量使用一样的变量名,那么局部变量会覆盖全局变量。
变量声明会被自动提升到函数的顶部先运行,但是并不代表会赋值。

3.let定义变量,const定义常量

使用let定义的全局变量不会变成window对象的属性。
使用let定义的变量不会提前装载,必须执行到了代码块才会转载。但是依然会有局部变量覆盖全局变量的情况。
使用let定义的变量有块作用域。

var name ="全局变量name";
function test(){
    alert(name);                           //会报错因为name是局部变量, 但是let定义的name不会提前装载,所以报错。
    let name ="局部变量"
    alert(name);
}

使用const定义常量必须在定义是就指定初始值,并且不允许改变。

4.基本数据类型

1.数值类型:
十六进制以0X开头,八进制以0开头
Infinity表示正无穷
-Infinity表示负无穷大
Infinity与-Infinity之间运算将得到NuN,正无穷总是相等,负无穷也总是相等
除数和被除数同时为0,则得到NuN,NuN不与任何数值变量相等,isNuN(a)可以判断a是否为NuN
正数除0得到正无穷,负数除0得到负无穷
Number类
判断两个浮点数的值是否相等,用差值比较,只要两个浮点数的差值小于一个足够小的数即可认为相等。
2.布尔类型:
3.字符串类型:必须用引号(单/双)括起来
比较两个字符串是否相等直接用==即可
String类
4.undefined类型:已经创建,但是没有初值的变量
5.null类型:某个变量的值为空

5.数组

JavaScript中的数组元素并不要求相同

var a = [1,Hello,0];
var b = [ ];
var c = new Array( );

JavaScript的数组长度可以任意变化,可以随意添加元素,访问数组元素时不会产生越界,访问未赋值的数组元素时,该元素的值为undefined
1.数组作为栈使用:
push( a ):元素入栈,返回入栈后的数组长度
pop( ):元素出栈,返回出栈的数组元素
2.数组作为队列使用:
unshift( a ):元素入队列,返回入队列后的数组长度
shift( ):元素出队列,返回出队列的数组的元素
Array对象的其他方法:
concat( a ,b ,….):为数组添加若干元素,返回得到的数组,但原数组并不改变
sort( ):排序
reverse( ):反转

6.函数

JavaScript中的函数用function关键字定义,并且无须声明形参类型,无须声明返回值类型。
1.

function functonName( name){

 }

2.匿名函数:无须指定函数名,即定义一个函数对象,然后将该对象赋值给一个变量,如果匿名函数赋值的变量用var修饰,那么就是一个局部变量,如果没有用var修饰那么就是一个全局变量,那么此时匿名函数就变成了全局函数。

var f =function (name){
    document.writeln(‘ Hello’+name);
};
f(' world');                 //将输出Hello world

3.。。。。
4. 如果直接输出函数本身,如alert(函数),将会输出函数源代码。


对象创建

**一般有 var a =…; 后面接分号结尾
a = … 不用分号结尾**
1.使用new关键字
2.创建Object对象然后添加属性
3.使用JSON 语法创建对象

var a ={
        info : function(){            // 为对象创建方法
            ...
            },
        name:1,               //属性后面要有,
        age:2                //最后一个属性后面没有,
        };

函数中的变量以及属性

1.函数中以var修饰的是局部变量———在函数外无法访问
2.函数中以this前缀修饰的变量的是实例属性 ——-如 this.age
应该通过实例对象来访问,不同对象可以不同。
3.函数中以函数名前缀修饰的变量是类属性 ————如 Person.age
只能同过类来访问,实例对象不拥有类属性。
4.JavaScript中可以随时为某个对象实例属性,即直接为某个属性赋值。


函数调用

1.直接调用
调用者.函数(参数1,参数2.。。。)
2.call
函数.call(调用者,参数1,参数2.。。。。。)
3.apply
函数.apply(调用者,[参数1,参数2.。。。。])

7.运算符

1.三目运算符: ? : ;
三目运算符与 if else 的区别是if else 后面可以有多条语句,但是三目运算符是不支持多条语句的
2.逗号
逗号运算符允许将多条表达式放在一起,整个表达式返回最右边的表达式的值

var  a = (b=1,c=2,d=3);            //  a 的值为3

3.void运算符:表示强制没有返回值

var  a = void(b=1,c=2,d=3);       //a变量没有赋值 

4.typeof a:返回某个变量a的数据类型
5.instanceof Object:判断某个变量是否为某个类型的实例

8.异常

  1. 异常抛出语句: throw new Error( errorString);
  2. 异常捕捉语句:
try{
    statements
}
catch( e )
{
    statsments
}
finally      //finally块是可以省略的,一旦有finally块,那么finally块总会获得执行
{
    statements
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值