js基础总结(上)

一.js的几种常用的输出方式:

1.alert(内容) 在浏览器弹出一个窗口,输出我们的内容 。在真实项目中,如果有一个提示层,我们基本上不用alert,而是自己用js写一套插件来实现 ;

2.confirm("我们是好好学呢,还是好好学呢?");确定和取消两个按钮,浏览器自带的提示选择弹出层

3.①console.log(内容) 在控制台输出我们的内容,所有浏览器按F12打开控制台(推荐大家安装谷歌浏览器),找到console这个页卡,我们输出的内容在那里可以看到

② console.dir();在控制台输出内容 比log输出的详细一些

③console.table();在控制台以表格的形式输出内容

4.document.write(内容) 在页面中输出内容 做广告的插入例:document.write("哈哈哈哈哈!");

5.innerHTML/innerText 把内容添加到指定的元素之中,项目中我们通常使用innerHTML,因为innerHTML不仅仅可以添加文字,而且在添加内容的时候,如果遇到内容中包含html标签,innerHTML可以把标签进行有效的识别,而innerText不能识别标签。

二.js的组成

javascript是一门轻量级的脚本编程语言,它是由三部分组成的:
ECMAScript:规定了js的基本语法、命名规范、数据类型、操作语句等等...是js的基本核心
DOM:document object model 文档对象模型,提供了让我们能操作html标签的属性和方法
BOM:browser object model 浏览器对象模型,提供了让我们操作浏览器的相关的属性和方法

ECMAScript

Ⅰ.js的命名规范

①.js中是严格区分大小写的,test和Test是两个名字.

②.使用驼峰命名法 ,第一个首字母小写,其余每一个有意义的单词的首字母都要大写例:学生信息 studentInfo studentInfo(ps:这一条是用来约束自己,大家最好这样写,不是js命名规范里必须的)

③.可以使用字母、数字、下划线、$命名,但是数字不能作为开头。例:人员的重要信息 personImportInfo, $person:通常项目中这种名字代表的是jQuery专用的名字

④.不能使用关键字和保留字。关键字:js中具有特殊意义的词,我们不能随便拿来命名;保留字:未来可能会成为关键字的。http://www.php100.com/html/webkaifa/javascript/2008/1105/1566.html

Ⅱjs中的变量及数据类型

①变量:可变的量 js中的变量是用来存储值和代表值的

var 变量名;

var num = 12;定义一个变量num,并且给这个变量赋值12,那我们说num存储了一个12的值
,console.log(num);num在这里代表了12这个值 在控制台输出num这个变量所代表的值 (在js中 "=" 是赋值:=左边是变量 =右边是值(哪怕看上去不是值,也是代表一个值的,例如:右边是一个变量的话,意思是把变量代表的值赋值给我们的左边))var num1 = 12;
//var num2 = num1;//把num1这个变量所代表的值赋值给我们的num2这个变量,

js中的变量存在一个特点:是松散类型的,因为它可以存储任何的数据类型值

var num = 12;//数字
//

var str = "珠峰培训";//字符串 用""或者‘‘包起来的都是字符串

// var boo = true;//布尔类型值 true/false
//

var n = null;//null

var u = undefined;//undefined

var obj = {name: "珠峰"};//对象数据类型的值

var ary = [12, 23, 34];//数组

var reg = /^[+-]?(?:\d|[1-9]\d+)(\.\d+)?$/;//正则

var fn=function(){//函数
//
// }

js中的数据类型:

1、基本数据类型(值类型) 看上去数据结构比较的简单
//数字(number) 字符串(string) 布尔(boolean) null undefined

2、引用数据类型 看上去数据结构相对复杂的
//对象数据类型(object):{}对象 []数组 /^$/正则 时间(Date) .....  函数数据类型(function)

这么多数据类型,浏览器如何的去分辨呢? -->js中检测数据类型的方式:

A、typeof 检测数据类型的运算符,返回的结果:首先是一个字符串,字符串中包含了当前值的数据类型,例如:"number"、"string"、"boolean"、"undefined"、"object"、"function"

1)typeof null ==> "object"

2)局限性:不能够具体的检测对象数据类型的详细分类,例如:typeof [12,13] ==> "object" typeof /^$/ ==>"object" ...

var num = 12;
//console.log(typeof num); //==> "number"

腾讯公司关于typeof的一个面试题:
//console.log(typeof typeof typeof typeof [12, 23, 34]);// "string"

typeof [12, 23, 34] ==> "object"

分析:typeof "object" ==> "string";typeof "string" ==> "string";typeof "string" ==> "string";因为typeof返回的首先是一个字符串,所以出现两个及以上的typeof同时使用的时候,最终结果一定是"string"

B、instanceof

C、constructor

D、Object.prototype.toString.call()

基本数据类型与引用数据类型的区别:
 var num1 = 12; var num2 = num1; num2++;//num2+=1 num2=num2+1 自身的值累加1
// num2-->13;console.log(num1);//12

基本数据类型:是直接按照值来操作的;1、定义一个变量num1,然后把值12直接的给了我们的num1

2、定义一个变量num2,把num1的值12赋值给了num2,此时num2=12

3、num2++,自身加1后num2=13
//

4、上述三个步骤,num2的值改变了,但是并没有改变num1的值,所以num1还是12

var obj1 = {name: "沈杨", age: 28};

var obj2 = obj1;

obj2.age = 27; //obj2.age --> 27

console.log(obj1.age);//27

引用数据类型:操作的是对空间的一个引用的地址

1、首先开辟一个新的内存空间(地址:xxxfff000),然后把对象中的属性名和属性值存储到这个空间中

2、把地址给我们的obj1这个变量 obj1=xxxfff000

3、定义变量obj2=obj1存储的值,也就是 obj2=xxxfff000,此时我们的obj1和obj2都是通过一个地址操作相同的内存空间

4、obj2.age=27 obj2通过xxxfff000这个地址,把空间中的age改成了27

5、obj1.age=? obj1通过地址访问空间,找到的age已经变成了27了

思考题:

var obj1 = {name: "张三", age: 19};

var obj2 = obj1;
var obj3 = obj2;

obj3.age = 24;

obj2 = {name: "李四", age: 20};

console.log(obj1.age);

console.log(obj2.age);

console.log(obj3.age);

结果:

20

24

20

number数据类型详细解读

number数据类型中都包含哪些值?正数、负数、零、小数 NaN //NaN:not a number 不是一个有效的数字,但是它属于number类型的

console.log(typeof NaN);//"number"

什么情况下出现我们的NaN?
     1、数字+undefined
     2、将其他的数据类型转换为number类型的时候,有可能会出现NaN --> 如何的将其他的数据类型转换为number类型?
         Number(); 强制转换,例如:将字符串转换为number类型的,如果字符串中有一个字符不是数字,那么就不能转换,返回的结果是我们的NaN
         console.log(Number("123"));//将字符串"123"变成数字123
         console.log(Number(true));//true-->1 false-->0
         console.log(Number("12px")); //NaN
     parseInt和parseFloat:非强制转换
    从左到右查找,把有效的数字字符转化为数字,当遇到一个非有效数字字符,我们查找停止(不管后面是否还存在有效的数字都不在找了)
           console.log(parseInt("12px"));//12
           console.log(parseInt("12p13"));//12
           console.log(parseInt("aa12"));//NaN
           console.log(parseInt("12.5px"));//12 parseInt不能识别小数点的
           console.log(parseFloat("12.5.3px"));//12.5 parseFloat相对于parseInt可以识别第一个小数点

isNaN():用来检测某个值是否为有效的数字,如果是有效的数字返回false,相反不是有效的数字才返回true
      当用isNaN检测值的时候,我们发现这个值不是number类型的,浏览器会默认的使用Number()先将值转换为number类型,然后在检测是否为有效的数字
               console.log(isNaN(12));//false
               console.log(isNaN(NaN));//true
               console.log(isNaN("12"));//false Number("12")-->12 isNaN(12)-->false
               console.log(isNaN("12px"));//true Number("12px")-->NaN isNaN(NaN)-->true

boolean数据类型详细解读

布尔类型中只有 true/false

!:首先将其他的数据类型转换为boolean类型,然后在把得到的布尔值取反

!!:将其他数据类型转换为布尔类型 和我们的Boolean()效果一样

将其他的数据类型转化为布尔类型,遵循下面的这个规律:只有0、NaN、空字符串、null、undefined 转换为false,其余的任何值都是truestring数据类型详细解读

string数据类型详细解读

js中用‘‘或""包起来的叫字符串

js中用来操作字符串的常用的11种方法(ps:后面还会继续补充)
               var str = "zhufengpeixun2015yangfanqihang";
                  字符串也是存在索引和length的
                  str.length 获取字符串的长度(字符的个数)
                  第一个字符的索引是0,第二个字符的索引是1...
                  console.log(str[2]);

1、charAt(index):通过索引index获取指定位置的字符
                console.log(str.charAt(3)); -->"f"
                charCodeAt(index):通过索引index获取指定位置的字符对应的Unicode编码值
                console.log(str.charCodeAt(3)); -->"f"对应的Unicode值102

var str = "zhufengpeixun2015yangfanqihang";
            2、截取字符串
                 substr(n,m):从索引n开始截取m个字符
                 console.log(str.substr(3,10)); -->"fengpeixun"
                 substring(n,m):从索引n开始截取到索引m处(不包含m)
                 console.log(str.substring(3,10)); -->"fengpei"

slice(n,m):从索引n开始截取到索引m处(不包含m)
                 console.log(str.slice(3,10)); -->"fengpei"如果只写n不写m,从索引n开始找到末尾

slice支持负数作为索引
                   console.log(str.slice(-4));//index=str.length-4
                   console.log(str.substring(-4));

var str = "zhufengpeixun2015yangfanqihang";
               3、通过制定的字符获取索引
                    str.indexOf("字符") 获取字符在字符串中第一次出现位置的索引
                    str.lastIndexOf("字符") 获取字符在字符串中最后一次出现位置的索引
                    console.log(str.indexOf("h")); -->1
                    console.log(str.lastIndexOf("h")); -->26
                    console.log(str.indexOf("2015")); -->13
                    特殊作用:可以判断字符串中是否包含某一个字符,包含返回索引,不包含返回-1
                      if(str.indexOf("2015")>-1){
                               包含
                      }else{
                              不包含
                      }

var str = "zhufengpeixun2015yangfanqihang";
                 4、大小写转换
                     console.log(str.toUpperCase());//字母转大写
                     console.log(str.toLowerCase());//字母转小写
                   var str = "zhu feng pei xun 2015 yang fan qi hang";

5、和数组中join对应的方法-->split:按照指定的字符,把字符串拆分成数组
                      console.log(str.split(" "));//["zhu", "feng", "pei", "xun", "2015", "yang", "fan", "qi", "hang"]
                      var str = "珠峰培训";//“zhufeng”
                  6、replace(old,new):将老字符替换成新的字符
                       console.log(str.replace("珠峰","zhufeng")); -->"zhufeng培训"
                       在不使用正则的情况下,一次replace执行只能替换一次
                       var str = "13/01/25"
                       console.log(str.replace("/",":").replace("/",":"));
                       console.log(str.replace(/\//g, ":")); //正则方式

console.dir(String.prototype);//可查看字符串下所有方法

字符串的简单应用

var timeStr = "2015-8-2 14:41:2";将timeStr 变成"2015年08月02日 14时41分02秒"的形式

    var ary = timeStr.split(" ");

var s1 = ary[0];

var s2 = ary[1];
    var ary1 = s1.split("-");
    var ary2 = s2.split(":");
    var str = ary1[0] + "年" + addZero(ary1[1]) + "月" + addZero(ary1[2]) + "日 " + addZero(ary2[0]) + "时" + addZero(ary2[1]) + "分" + addZero(ary2[2]) + "秒";
    console.log(str);

//补充0,如果字符串的长度小于2补充0,否则不用管
     function addZero(val) {
           return val.length < 2 ? "0" + val : val;
     }

引用数据类型下节继续,先说一下数据类型直接的转换

两个值用==比较的时候,左右两边的数据类型不同,浏览器会默认的先进行数据类型转换
           ①对象 == 对象 :肯定不相等,因为不是同一个内存地址 例如:[]==[] false
           ②对象 == 字符串:将对象转换为字符串(toString) 例如: []=="" true
           ③对象 == 布尔:都转换为数字 Number(对象.toString()) true-->1 false-->0 例如:[]==false Number("")-->0 true
           ④对象 == 数字:对象转化为数字 例如:[]==1 false
           ⑤字符串 == 布尔:都转化为数字 字符串调用Number转换为数字
           ⑥字符串 == 数字:字符串转换为数字
           ⑦布尔 == 数字:布尔转换为数字
           ⑧数字 == 数字:NaN==NaN 是false
           ⑨null==undefined -->true
           ⑩null和undefined和其他任何的一个数据类型比较都是false

"5"+3 --> "53" “+”不只是数学运算,还是字符串的拼接
            "5"-3 --> 2 “- * /”只有数学运算

时间: 2024-10-26 16:25:19

js基础总结(上)的相关文章

【 js 基础 】Javascript “继承”

是时候写一写 "继承"了,为什么加引号,因为当你阅读完这篇文章,你会知道,说是 继承 其实是不准确的. 一.类1.传统的面向类的语言中的类:类/继承 描述了一种代码的组织结构形式.举个例子:"汽车"可以被看作是"交通工具"的一种特例.我们可以定义一个 Vehicle 类和一个 Car 类来对这种关系进行描述.Vehicle 的定义可能包含引擎.载人能力等,也就是 所有交通工具,比如飞机.火车和汽车等都有的通用的功能描述.在对 Car 类进行定义的

js基础知识总结(2016.11.1)

js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划():避免全局变量和方法(命名空间,闭包,面向对象),模块化(seaJs,requireJs) 常用内部类:Data Array Math String HTML属性,CSS属性HTML:属性.HTML属性="值":CSS:对象.style.CSS属性="值"; class和f

JS基础知识回顾:引用类型(一)

在ECMAScript中引用类型是一种数据结构,用于将数据和功能组织在一起,而对象时引用类型的一个实例. 尽管ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构,所以虽然说引用类型与类看起来想死,但他们并不是相同的概念. 不过引用类型有的时候也可以被称为对象定义,因为他们描述的是一类对象所具有的属性和方法. 新对象是使用new操作符后跟一个构造函数来实现的,构造函数本身就是一个函数,只不过该函数时处于创建新对象的目的而定义的. ECMASc

JS基础(一)

01-JS中的变量和输入输出 一.[使用JS的三种方式] 1.在html标签中直接内嵌js.(不提倡使用,不符合w3c关于内容与行为分离的要求) 2.在html页面中使用<script></script>包裹js代码.(Script标签可以放到页面的任何位置) <script type="text/javascript"> js代码 </script> 3.引入外部的js文件,使用script标签 <script type=&quo

js基础知识点总结

js基础知识点总结 如何在一个网站或者一个页面,去书写你的js代码:1.js的分层(功能):jquery(tool) 组件(ui) 应用(app),mvc(backboneJs)2.js的规划():避免全局变量和方法(命名空间,闭包,面向对象),模块化(seaJs,requireJs) 常用内部类:Data Array Math String HTML属性,CSS属性HTML:属性.HTML属性="值":CSS:对象.style.CSS属性="值"; class和f

nodejs学习笔记_nodejs和PHP在基础架构上的差别--共享状态的并发

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明确node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,:共享状态的并发. node採用一个长期执行的进程 而php在apache中会产生多个进程 例如以下图所看到的: 代码验证: PHP: <?php $i = 0; $i++; echo $i nodejs: var http = require('http'); var i=0; http.creat

JS基础四

1.函数是一组可以随时随地运行的语句. 函数是 ECMAScript 的核心. 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及置于括号中的待执行代码. 2.闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量. 3.把对象的所有引用都设置为 null,可以强制性地废除对象.object  设置为null, 4.本地对象(native object) Object Function Array String Boolean Numb

js基础--javascript基础概念之变量与作用域

js基础--javascript基础概念之变量.作用域 javascript按照ECMA-262 的定义,变量与其他语言变量有所不同.js变量时松散的,不需要事先定义变量类型的.这使得他只是一个保存特定值的一个名称.变量与其数据类型可以在脚本的生命周期内改变. 还有明白几点: JavaScript的变量作用域是基于其特有的作用域链的,JavaScript没有块级作用域. 基本类型和引用类型的值 ECMAScript 的变量有两种不同的数据类型:分别是 基本数据类型值 和 引用类型值 : 基本数据

JS基础三

1.delete删除对对象的属性和方法的定义.强制解除对它的引用,将其设置为 undefined delete 运算符不能删除开发者未定义的属性和方法. 2.void 运算符对任何值返回 undefined.该运算符通常用于避免输出不应该输出的值,没有返回值的函数真正返回的都是 undefined. 3.前增量运算符,就是数值上加 1,形式是在变量前放两个加号(++): var iNum = 10; ++iNum; 第二行代码把 iNum 增加到了 11,它实质上等价于: var iNum =