zoukankan      html  css  js  c++  java
  • JS基础语法

    Js基本语法

    Js的使用方式:

    1. 行内js

    写在标签中的js代码

    1. 内部js

    写在页面中的js代码

    1. 外部js

    引入外部的js代码

    注意:1.如果<script></script>标签设置了src属性,则在双标签中写的js代码无效

               2、通常使用JS时,会选择内部JS或外部JS

    语句:

               JS代码是以行为单位,一行一行执行。

               一般情况下,一行一条语句。

                  每句语句后面最好加上分号,如果一行写多条语句(不建议),则每条语句后面必须加分号。

               如果是表达式,不需要加分号,如果加了JavaScript引擎会把它当做语句编译。

    注释:

               单行注释:   // 注释内容

               多行注释:   /* 注释内容 */

               Html风格:<!-- html的注释-- >

    变量的声明

                  JavaScript 是一种弱类型语言,在声明变量时不需要指明数据类型,直接用 var 修饰符进行声明。

    两种方式:

                       1、先声明,后赋值

                       2、声明并赋值

                                                  

    变量的注意点

                       1)若只声明而没有赋值,则该变量的值为 undefined。

                       2)变量要有定义才能使用,若变量未声明就使用,JavaScript 会报错,告诉你变量未定义

                       3)可以在同一条 var 命令中声明多个变量。

                       4)若使用 var 重新声明一个已经存在的变量,是无效的。

                       5)若使用 var 重新声明一个已经存在的变量且赋值,则会覆盖掉前面的值

                       6)JavaScript 是一种动态类型、弱类型语言,也就是说,变量的类型没有限制,可以赋予各种类型的值。

                       7)声明变量时,可以不加var修饰符,此时变量为全局变量(不建议)

                                        

    变量提升

                       JavaScript 引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。

    JS是弱类型语言,变量没有类型,但数据有类型。

                                         JavaScript 中有 6 种数据类型。

                                         其中有五种简单的数据类型:

    Undefined、Null、布尔、数值和字符串。

                                         一种复杂数据类型 Object。

                                                  

                                         数 值(Number): 整数和小数(比如 1 和 3.14)

                                         字符串(String): 字符组成的文本(比如"Hello World")

                                         布尔值(Boolean):true(真)和 false(假)两个特定值

                                         Undefined: 表示“未定义”或不存在,即此处目前没有任何值

                                         Null: 表示空缺,即此处应该有一个值,但目前为空

    对象(object)(引用) : 各种值组成的集合

                                         1)、对象(object){name:"zhangsan",age:"18"}

                                         2)、数组(array)[1,2,3]

                                        3)、函数(function)function test() {}

                                        

    1、typeof 操作符

                                         typeof 操作符是用来检测数据类型。

    说明:1、typeof null 返回的是 object 字符串

    2、函数不是数据类型,但是也可以使用 typeof 操作符返回字符串。

    typeof 操作符可以操作变量也可以操作字面量。

    注意:函数在 JavaScript 中是对象,不是数据类型,所以使用 typeof 区分 function 和object 是有必要的

                       这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这就叫做变量提升。

    注意:变量提升只对 var 命令声明的变量有效,如果一个变量不是用 var 命令声明的,就会发生变量提升。

    undefined

                       undefined 类型的值是 undefined。

                       undefined 是一个表示"无"的原始值,表示值不存在。

                       常见的undefined的情况:

                                         1、当一个变量只声明而未赋值时

                                         2、当一个函数需要形参,调用时未传递形参,此时参数为undefined

                                         3、当一个函数没有返回值,调用方式时去接收,会返回undefined

                                                           

    null

    null 类型是只有一个值的数据类型,即特殊的值 null。它表示空值,即该处的值现在为空,

                       它表示一个空对象引用。

                       使用 Null 类型值时注意以下几点:

                                         1)使用 typeof 操作符测试 null 返回 object 字符串。

                                         2)undefined 派生自 null,所以等值比较返回值是 true。所以,未初始化的变量和赋值为null 的变量相等。

                                        

    数值型

                       数值型包含两种数值:整型和浮点型。

                       1)所有数字(整型和浮点型)都是以 64 位浮点数形式储存。所以,JS 中 1 与 1.0 相等,而且 1 加上 1.0 得到的还是一个整数。浮点数最高精度是 17 位小数,由于浮点数运算时可能不精确,尽量不要使用浮点数做判断。

                       2)在存储数值型数据时自动将可以转换为整型的浮点数值转为整型。

                       3)对于过大或过小的数值,可以使用科学计数法来表示

    4)Infinity、-Infinity

                       超过了表数范围,出现 Infinity(正无穷)或者-Infinity(负无穷)

                       isFinite()函数可以确定是否超出范围:

                       true:没有超出;false:超出了。

    NaN

                       表示非数值(Not a Number),是一个特殊的值。

                       如:将字符串解析成数字出错的场合。

                       注意:

                                NaN 不等于任何值,包括它本身,因为它不是一个值

                                NaN 与任何数(包括它自己)的运算,得到的都是 NaN。

                                                                              

                       isNaN()可以用来判断一个值是否为 NaN

                                true:不是数字;false:是数字

                                        

    字符串

                       使用 ' ' 或 " "引起来,如:'sxt',"good"。

                       使用加号’+’进行字符串的拼接,如:console.log('hello' + ' everybody');

                                        

                                        

    对象

                       对象是一组数据和功能的集合。

                       typeof window // "object"

                       typeof {} // "object"

                       typeof [] // "object"

                       typeof null // "object"

                       说明:

                                {}:表示使用对象字面量方式定义的对象。空的大括号表示定义包含默认属性和方法的对象。

    instanceof 运算符

                       typeof 操作符对数组(array)和对象(object)的显示结果都是 object,那么可以利用

                       instanceof 运算符,它可用于判断一个变量是否某个对象的实例。

    parseInt()和 parseFloat()两个全局转换函数。

                       前者把值转换成整数,后者把值转换成浮点数。

                       只有对 String 类型调用这些方法,这两个函数才能正确运行;

                       对其他类型返回的都是 NaN(Not a Number)。

                                        

    parseInt()

                       会从下标0开始找,如果不是有效数字,返回NaN;如果是,则继续往后找,直到不是有效数字位置

                     parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由 parseInt()方法的第二个参数指定的

                       如果十进制数包含前导 0,那么最好采用基数 10,这样才不会意外地得到八进制的值

    parseFloat()方法

                       与 parseInt()方法的处理方式相似,从位置 0 开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字 符之前的字符串转换成数字。

                       不过,对于这个方法来说,第一个出现的小数点是有效字符。

                       如果有两个小数点,第二个小数点将被看作无效的,parseFloat()方法会把这个小数点之前的字符串转换成数字。

    显式转换

                       toString()函数将内容转换为字符串形式

                       toFixed()函数将根据小数点后指定位数将数字转为字符串,四舍五入

                       注:不能对null和undefined使用

                                                  

    强制转换

                       JS 为 Number、Boolean、String 对象提供了构造方法,用于强制转换其他类型的数据。

                       此时操作的是整个数据,而不是部分

                                                  

                       String()是最简单的,因为它可把任何值转换成字符串。

                       String()和toString()的区别,在于前者可以操作null和undefinded

    数组的创建

                       var arr=[值 1,值 2,值 3]; //隐式创建

                       var arr=new Array(值 1,值 2,值 3); //直接实例化

                       var array=new Array(size); //创建数组并指定长度

                                                  

    基本操作

                       1、数组的长度可以通过 length 属性来获取,并可以任意更改

                       2、数组中的每一个元素都可以被访问和修改,甚至是不存在的元素,无所谓越界

                                                  

    数组的遍历

                       1、for(var i=0; i < 数组.length; i++) {}

                       2、for(var 下标名  in 数组) {}

                       3、数组.forEach(function(元素,下标){});

                                                  

    了解:

                       如果下标:

                       1.为非负整数(包括整数字符串):自动从 0 开始,不存在添加 undefined

                       2.为负数、小数、非数字符串:这些内容不计算在长度内,当成"属性"处理,相当于自定义属性。

                       数组非常灵活,使用数组元素

                       1.下标: 非负整数(包括整数字符串):

                       数组.下标

                       数组[下标]

                       2.下标:负数、小数、非数字字符串:

                       数组[属性]

                                                                            

                       * for -- > 不遍历属性

                       * foreach -- >不遍历属性和索引中的 undefined

                       * for in -- >不遍历索引中的 undefined

                                                                    

                                        

    数组中提供的常用方法

                       push 添加元素到最后

                       unshift 添加元素到最前

                       pop 删除最后一项

                       shift 删除第一项

                       reverse 数组翻转

                       join 数组转成字符串

                       indexOf 数组元素索引

                       slice 截取(切片)数组,原数组不发生变化

                       splice 剪接数组,原数组变化,可以实现前后删除效果

                       concat 数组合并

    1. 函数的定义

                       有三种函数定义的方式:函数声明语句、函数定义表达式、Function 构造函数

    函数声明语句

                       function 函数名([参数列表]) {}

                       调用:函数名([参数列表]);

    函数定义表达式

                       var 变量名/函数名 = function([参数列表]) {}

                       调用:变量名/函数名([参数列表]);

    Function 构造函数

                       var 变量名 = new Function("参数1","参数2","最后一个参数为是函数体");

                       调用:变量名/函数名([参数列表]);

    注意:

                       1、js 中的函数没有重载,同名的函数,会被后面的函数覆盖。

                       2、js 中允许有不定数目的参数

    函数的参数

                        实参可以省略,那么对应形参为 undefined

                       若函数形参同名(一般不会这么干):在使用时以最后一个值为准。

                       可以给参数默认值:当参数为特殊值时,可以赋予默认值。

                       参数为值传递,传递副本 ;引用传递时传递地址,操作的是同一个对象。

                                        

    函数的调用

                       常用调用方式:函数名([实参]);

                       存在返回值可以变量接收,若接收无返回值函数则为 undefined

                       1、函数调用模式

                       2、方法调用模式

                       3、间接调用模式

                       call()和 apply()方法可以用来间接地调用函数。

                       任何函数可以作为任何对象的方法来调用,哪怕这个函数不是那个对象的方法。

                       两个方法都可以指定调用的实参。

                       call()方法使用它自有的实参列表作为函数的实参,apply()方法则要求以数组的形式传入参数

                                        

                       匿名函数立即调用

                       (1)匿名函数:function ([参数]){}

                       (2)调用:(function ([形参]) {})([实参]);

                       在函数只被使用一次的情况下可以使用这种方式,简便省事

                                                           

    return 语句

                       作用:在没有返回值的方法中,用来结束方法。

                       有返回值的方法中,一个是用来结束方法,一个是将值带给调用者。

                                

  • 相关阅读:
    最优装载(二分答案)
    最小生成树
    hibernate映射实体类查询时数据库空字段赋值给实体类报错的问题
    'hibernate.dialect' must be set when no Connection avalable
    简单了解一下oracle中的显示游标和存储过程
    oracle中的预定异常和自定义异常
    PL/sql中如何声明变量,常量,控制语句及for,loop,while和顺序控制的使用
    简单了解,使用oracle中的索引,表分区
    oracle中序列,同义词的创建
    数据库权限管理
  • 原文地址:https://www.cnblogs.com/jj-01/p/11285661.html
Copyright © 2011-2022 走看看