JavaScript学习

javascript

基础知识

变量

声明未赋值的变量未 undefined; 省略var的变量是隐式全局变量。 在函数外部声明的var变量是显示全局变量。

函数

函数的声明样式:

function fun_name (param1, param2, param3, ...) {
    // do some thing here
}

由于函数的声明中对于参数的类型并没有限制,因此在函数内部,函数设计者需要对此进行判定,使得函数更具有健壮性。

匿名函数表达式

形式:

function (param1, param2, param3, ...) {
    // do some thing 
}

匿名函数表达式为一个表达式,因此可以直接给变量赋值,或者作为一个变量参数使用。

对象

对象本质上是没有名称的,变量存在的意义是为了调用没有名称的对象。 <b> java 中对象可以看成是类的实例化结果,而在JavaScript中,并没有类的概念,而对象中存储的是名称和值配对的集合,因此js中对象可以看成是属性的集合。 </b>

字面量表达式

字面量表达式由{}裹起来,内部由属性名和属性名称。

{key:value, key:value, key:value, ...}

访问方式:

  • 点运算符,后面可以直接写属性名,不用加""
  • 括号方式,使用[]进行访问,但是需要加"". 对于对象中不存的的属性值进行赋值,则会创建新的属性。
new 运算符

JavaScript中没有类的概念,因此,var obj = new Object();new之后的并不是类,而是构造函数。

数据类型与运算符

运算符

  • 基本运算符
类型示例1示例2
自加+=a += 1
+
-
*
/
%
自增++
自减--
存在in
类型判断instanceof
逻辑非
逻辑与&&
逻辑或||
  • 其他运算符
    • 三目运算符: 条件表达式?表达式1:表达式2;
    • typeof运算符: 其结果为
    'string'
    'number'
    'boolean'
    'undefined'
    'object'
    'function'
    'xml'
    
    • new: 生成对象
    • delete: 删除对象的属性
    • .运算符与[]运算符:访问属性

原始值 primitive value Y 原始类型 primitive type 基本数据类型 N

简单数据类型

基于类与基于原型

对于Java而言,除内建类型之外的都是用户自定义类型,用户自定义类型分为类和接口,开发者需要书写该类型的定义语句来定义使用此类型。这种编程风格称为基于类的语言风格。

JavaScript的语言规范中,不存在定义数据类型的语句,不需要使用特别的语句就能定义一个对象的属性和方法,并确定了一个对象。所谓类型只是行为方式上的共性。由于每个对象都具有相同的行为方式,所以可以使用原型对象。此称为基于原型的风格。

常用内置对象

数组 Array

字面量表达式:

var list = [param1, param2, param3, ...]

可以装填不同类型的数据

字符串 String

JavaScript中没有字符的概念,使用长度为1的字符串来表示字符。 使用双引号和单引号,两者没有区别。可以灵活使用单双引号类消除或者减少使用转义字符。 String 为不可变类型,对其运算会生成新的string。

var s1 = '123';
var s2 = s1;
s1 += "234";

具有大小比较的特性。

  • === 比较的时候不会对数据类型进行变换。
  • == 会进行数据类型的转换。
  • <

长度 str.lenght 字符 str.charAt(index)

字符串值和字符对象字面值
var str = new String('abc');

上面为一个字符串对象,一般来说。字符串对象与字符串值之间并没有明显的 区别,但是在相等时就有一定的区分了。

var str1 = new String('abc');
var str2 = new String('abc');
var b1 = (str1 == str2);            // false
var b2 = (str2 === str2);           // false
var b3 = (str1+"" == str2+"");      // true   String -> 字符串值
var b4 = (str1+"" === str2+"");     // true   String -> 字符串值

ps:

var str1 = new String('123');
var str2 = String('123');
var str3 = '123';


console.log(typeof str1);           // object
console.log(typeof str2);           // string
console.log(typeof str3);           // string

ps:

function说明
String()构造函数
new String()生成string实例
fromCharCode()将参数生成string类型的值
charAt(index)从0开始,越界返回空字符串
charCodeAt(index)
concat(str1, str2, ...)拼接
constructor
......
slice(start, end)
split(separator, limit)
substr(start, end)
trim()
trimLeft()
trimRight()
length
数值

一种数值类型,64位的浮点小数。 == double

  • 运算 a/0将得到一个特殊的数值。

  • Math。 一个特殊的对象

  • Number 另一个特殊的对象

  • 常用函数 |函数或者构造函数|说明| |-----|-----| |Number(value)|将value变为数值类型| |new Number(value)|生成Number对象| |length|值为1| |MAX_VALUE| 64为浮点数的最大数| |MIN_VALUE| 64位浮点数的最小数| |NaN|not a number| |NEGTIVE_INFINITY| 负无穷大| |POSITIVE_INFINITY| 正无穷大|

小数运算没有相等的说法。

布尔值

true or false

null值

null属于字面量,但是使用 typeof运算符得到的结果为object

undefined

未定义的变量,是一种预定义的全局变量,对其进行typeof运算得到的是undefined

数据类型转换

  • 字符串变为数值

    1. 通常使用Number(), parseInt(), parseFloat(),等函数。其中Number()最为严格,如下:
    var v1 = Number("100xp");
    var v2 = parseInt("100px");
    var v3 = parseFloat("100px");
    
    1. 通过隐式转换 使用运算符,与Number()的效果一样。
    var s = '100';                  // 字符串
    var s2 = s + '';                // 数值
    
    1. 隐式转换
    var s = 100;                // 数值
    var s2 = s + '';            // 字符串
    
  • 将数值转为字符串 String()或者.toString()

在字符串和数值之间进行转换时要注意的事项

转换的对象数据类型转换结果
无法被转为数值的字符串数值NaN
空字符串数值0
数值NaN字符串“NaN”
  • 转为布尔型 将会转为false的类型:
    • 数值0
    • 数值NaN
    • null值
    • undefined值
    • 空字符串

运行时性能分析

对于客户端JavaScript代码,其运行受到如下因素的影响;

  • javascript 代码的执行时间
  • dom的渲染时间
  • 网络响应时间

语句、表达式和运算符

  • 保留字

  • 标识符

  • 字面量 包括:数值、字符串值、布尔值、null值、object、数列、函数、正则表达式

  • 语句

  • 代码块

  • 变量声明语句

    var foo = "new";
    
  • 函数声明语句

    function fun_name (param1, param2, ...){
        // do some here
    }
    
  • if-else 语句

    if(condifion){
        // do some
    } else {
        // do another
    }
    
  • swith-case 语句 使用===进行比较数据,一定要加break语句。

  • 循环语句

    // while
    while(condition){
        // do some thing
    }
    
    // do while
    do 
        // do some thing 
    while(condition)
    
    // for
    for(初始化表达式; 条件表达式; 更新表达式){
        // do some
    }
    
    // for in 
    for (表达式 in 对象表达式){
        // do some
        // 将属性名赋值给变量
    }
    
    // for each
    for each (表达式 in 对象表达式){
        // do some
        // 将属性值赋值给变量
    }
    
    // for each 与 for in
    var list = [12,23,45,6];
    
    for (const key in list) {
        if (list.hasOwnProperty(key)) {
            const element = list[key];
            console.log(key+":"+element);
        }
    }
    
    console.log("-------------------------")
    
    list.forEach(element => {
        console.log(element)
    });
    
  • break语句

  • continue语句

  • try-catch-finally语句

变量与对象

转载于:https://my.oschina.net/u/2598470/blog/1584774

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值