JavaScript 基本概念语法、数据类型、语句和函数

语法

  1. 区分大小写
  2. 标识符:指的是变量函数和属性的名字,或者函数的名字,推荐使用驼峰命名法
  3. 严格模式:ES5引入了严格模式的概念。严格模式是为JavaScript定义了一种不同的定义和解析模型,在严格模式下ES3的一些不确定行为将得到处理,一些不安全的操作也会抛出错误,要在整个脚本中启用严格模式,需要在顶部添加以下代码
“use strict
  1. 语句:以一个分号作作为结尾
  2. 变量:变量是松散类型的,可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符而已,定义变量使用var 操作符,但是使用var操作符定义的变量将成为该变量作用域里边的局部变量,这个变量在函数执行完之后就会被销毁
        function test(){
            var message = 'hello';
            console.log(message)
        }
        test()
        alert(message) //message is not defined

如果省略了var操作符,message就成了全局变量
可以使用一条语句定义多个变量,必须用逗号隔开

 var message = 'hi',
     found = false,
     age = 29;

数据类型

ECMAScript有5种简单的数据类型:undefined,Null,Boolean,Number和String
还有一种复杂的数据类型 Object, Object实际上是由一组无序的名值对组成的

typeof 操作符

作用:检测给定变量的数据类型

       var message = 'somre string'
       console.log(typeof message) //string
       console.log(typeof 95)  //number
       console.log(typeof null) //object

Undefined 类型

undefined只有一个值,特殊的undefined,在使用var变量但没有对他初始化的时候,这个变量的值就是undefined

       var message;
       alert(meaage == undefined) //true

对未初始化和未声明的变量执行 typeof 操作符偶都返回了 undefined 值

       var message;
       alert( typeof message) //undefined
       alert(typeof age) //undefined
       

Null 类型

null 表示一个空对象指针,typeof null 返回 object
如果将来的变量用来保存对象,那么最好将变量初始化为null
检查对象是否存在

       var car = null;
       if(car != null){
           //对car对象执行操作
       }

undefined 值派生自null

 console.log(null == undefined) //true

Boolean 类型

Boolean 有两个字面量 true 和 false
将一个值转换为对应的Boolean值,使用Boolean()
转换规则

数据类型 true false
String 任何非空字符串 " "空字符串
Number 任何非零字符串 0和NaN
object 任何对象 null
undefined 不适用 undefined

Number 类型

最基本的数值字面量格式是十进制整数
浮点数:该数值必须包含一个小数点,并且小数点后至少有一个数字

NaN

NaN是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况
任何设计NaN的操作都返回NaN
NaN与任何值都不相等

      //NaN与任何值都不相等
       console.log(NaN == NaN) //false
       console.log(isNaN(NaN)) //true
       console.log(isNaN(10)) //false
       console.log(isNaN("10")) //false 可以转换为数值10
       console.log(isNaN("blue")) //true 不能转换为数字
       console.log(isNaN(true)) //false 可以转换为1
数值转换

Number()用于任何数据类型转换为数值
parseInt()和parseFloat()用于把字符串转换为数值

        console.log(Number("hello world")) //NaN
        console.log(Number("")) //0
        console.log(Number("10")) //10
        console.log(Number("000011")) //11 十六进制转换为十进制
        console.log(Number(true)) //1

处理整数的时候最常用的是parseInt()函数
parseInt()函数在转换空字符的时候会返回NaN
parseInt()依次对每个字符串进行解析,如果第一个是数字字符,parseInt()会继续解析第二个字符,直到解析完所有的字符或者遇到第一个非空字符串

        console.log(parseInt("1234blue")) //1234
        console.log(parseInt(" ")) //NaN
        console.log(parseInt(22.5))  //22
        console.log(parseInt("0xA")) //10 十六进制数
        console.log(parseInt("070")) //56 八进制数
        console.log(parseFloat("1234Blue")) //1234
        console.log(parseFloat("22.5"))  //22.5
        console.log(parseFloat("22.34.5")) //22.34.5

String类型

String类型用于表示由零或多个Unicode字符组成的字符序列,即字符串
String类型包含一些特殊的字符串字面量,也叫转义序列

\n 换行  
\t 制表符  
\r 回车

字符串长度: text.length length属性
字符串特点:字符串是不可变,字符串一旦创建,他们的值就不能改变,要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量

转换为字符串的方法

1.toString()
数值、布尔值、对象和字符串都有toString()方法
但是null和undefined没有这个方法

      var age = 11
      console.log(age.toString()) //字符串"11"
      var found = true 
      console.log(found.toString()) //字符串"true"

2.String()
可以将任何类型的值转换为字符串,包括 null 和 undefined

      console.log(String(10))  //"10"
      console.log(String(true)) //"true"
      console.log(String(null)) //"null"

Object 类型

ECMAScript中的对象就是一组数据和功能的集合,对象可以通过 new 操作符要创建对象

var o new Object()

object类型是所有实例的基础

属性
  • constructor :保存着用于创建当前对象的函数
  • hasOwnProperty():用于检测给定的属性值在当前对象实例中是否存在
  • isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型
  • propertyIsEnumberable:用于检查给定的属性是否能用 for-in 语句来枚举
  • toLocaleString(): 返回对象的字符串表示
  • toString():返回对象的字符串表示
  • valueOf():返回对象的字符串、数值、或布尔值表示

hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性

o = new Object();
o.prop = 'exists';

function changeO() {
  o.newprop = o.prop;
  delete o.prop;
}

o.hasOwnProperty('prop');   // 返回 true
changeO();
o.hasOwnProperty('prop');   // 返回 false
o = new Object();
o.prop = 'exists';
o.hasOwnProperty('prop');             // 返回 true
o.hasOwnProperty('toString');         // 返回 false
o.hasOwnProperty('hasOwnProperty');   // 返回 false

遍历一个对象的所有自身属性

var buz = {
    fog: 'stack'
};

for (var name in buz) {
    if (buz.hasOwnProperty(name)) {
        alert("this is fog (" + name + ") for sure. Value: " + buz[name]);
    }
    else {
        alert(name); // toString or something else
    }
}

操作符

一元操作符

递增操作符:++
递减操作符:–
前置型:位于操作的变量之前
后置型:位于操作的变量之后

       var num1 = 2
       var num1 = 20
       var num3 = --num1 + num2  //21
       var num4 = num1 + num2  //21
       var num1 = 2
       var num1 = 20
       var num3 = num1-- + num2  //22
       var num4 = num1 + num2  //21
相等操作符

== 与 != 这两个操作符会强制转换数据类型后再比较相等不相等
=与!= 不经过转换即可比较相等不相等

 var result1 = ("55" = 55) //true 转换后相等
 var result2 = ("55" ===55) //false 不同的数据类型不相等
 null == undefined //true 转换类型后相等
 null === undefined //false 
条件操作符

条件运算符在执行时,首先对条件表达式进行求值, 如果该值为true,则执行语句1,并返回执行结果
如果该值为false,则执行语句2,并返回执行结果

逗号操作符

逗号操作符可以在一条语句中执行多个操作

 var num1 = 1,num2 = 2,num3 = 3

语句

if语句
do-while语句
while语句
for语句
for in语句

for in 语句是一种精准的迭代语句,可以用来枚举对象的属性
通过for-in 循环输出的属性名的顺序是不可预测的。
如果要迭代的变量值是null或者undefined,for-in 语句会抛出错误,
所以使用之前先确认对象的值是不是null 或者undefined

for(var i in man){
if(man.hasOwnProperty(i)){
      //code
  }
}
break和continue语句

break和continue语句用于在循环中精确地控制代码的执行
break语句会立即退出循环,强制继续执行循环后面的语句
continue语句会立即退出当前循环,退出循环后会从循环的顶部继续执行

with语句
switch语句

break关键字会使代码执行流跳出switch语句


switch(变量){
 case 变量值1:
  console.log("a");  //若变量与变量值1相同则执行该处代码
  break;
 case 变量值2:
   console.log("b"); //若变量与变量值2相同则执行该处代码
   break;
 case 变量值3:
   console.log("c"); //若变量与变量值3相同则执行该处代码
   break;  
 default:
 console.log("d");  //若变量与所有的变量值不同,则执行该处的代码

函数

函数使用 function 关键字来声明
基本结构是:

 function functionName (arg0,arg1,.....argN){
     statements
 }

任何函数在任何时候都可以通过return 语句后跟要返回的值要实现返回值
ECMAScript中的参数在内部是用一个数组来表示的
在函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每一个参数

ECMAScript 函数不能实现重载

猜你喜欢

转载自blog.csdn.net/wyw223/article/details/84894866