提示用户开始浏览器的启用Javascript功能

<html>
<head><meta name="viewport" content="width=device-width" /><title>javascript测试</title><script src="~/Scripts/jquery-1.11.2.js"></script>
</head>
<body><!--由于一些人的浏览器禁用了javascript,所有在这种情况下我们需要提醒用户开启浏览器对javascript的支持。--><noscript>本站必须启用javascript <!--当浏览器禁用了javascript后,网站会提示“本站必须启用javascript”否则不提示--></noscript>
</body>
</html>

javascript数据类型

javascript有5种简单的数据类型 1.Undefined 类型  2.Null 类型  3.Boolean 类型  4.Number 类型  5.String 类型,  和一种复杂数据类型 Object 类型

typeof操作符 与数据类型

typeof操作符是用来检测变量的数据类型。对于值或变量使用typeof操作符会返回如下字符串

var box='';  字符串变量,如果一开始不知道初始化成什么字符串,就用''来进行初始化

var box=0; 数值初始化,一般用0;

var box=null; 对象初始化一般用null

alert(undefined==null)   由于undefined和null两个值的比较是相等的。所以,未初始化的变量和赋值为null的变量会相等。这时可以采用typeof变量的类型进行比较。这里打印出true

alert(undefined===null)  不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===表示两个变量如果类型不同,即便值相等,其结果也是不等。所以这里打印出false

<script type="text/javascript">//undefined表示类型或值未定义var box;alert(box);  //打印出:undefined  :即值未定义alert(typeof (box)); //打印出:undefined  //因为box是用var来声明的,而box又没有赋初始值,所有它的类型也是未定义的,所有这里打印出:undefinedvar pox = null;  //null表示空对象,即:这个对象还没有来得及创建,但是先声明了一个对象的变量在那里,默认初始化为nullalert(pox);//打印出:nullalert(typeof (pox)); //打印出;object  //因为pox已经付初始值null了。而null的类型是Null类型,这个Null类型是继承自Object的,所以这里打印出objectvar mox = {}; //{}表示空的对象,即:表示这个对象创建了,但是里面没有东西。alert(mox); //打印出:[object object] alert(typeof (mox));//打印出:objectvar dox = true;alert(dox); //打印出:truealert(typeof (dox)); //打印出:booleanvar fun = function abc() { return "100" };alert(typeof (fun)); //打印出:function 。因为fun是一个函数。所有这里打印出function
</script>

instanceof 运算符

虽然typeof 运算符在检查基本数据类型的时候非常好用,但检测引用类型的时候,它就
不是那么好用了。通常,我们并不想知道它是不是对象,而是想知道它到底是什么类型的对
象。因为数组也是object,null 也是Object 等等。
这时我们应该采用instanceof 运算符来查看。
var box = [1,2,3];
alert(box instanceof Array); //是否是数组
var box2 = {};
alert(box2 instanceof Object); //是否是对象
var box3 = /g/;
alert(box3 instanceof RegExp); //是否是正则表达式
var box4 = new String('Lee');
alert(box4 instanceof String); //是否是字符串对象
PS:当使用instanceof 检查基本类型的值时,它会返回false。


Javascript中的NaN

NaN,即非数值(Not a Number),它是一个特殊的值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。比如,在其他语言中,任何数值除以0 都会导致错误而终止程序执行。但在ECMAScript 中,会返回出特殊的值Nan,因此不会影响程序执行。

例如:var box=0/0   alert(box) 打印出:NaN     (本来0除以0我们是想得到一个数值的。但是因为0是不能作为被除数的,在别的程序里一般是报错的,但是在javascript中则不会报错,而是返回一个NaN,这样就不会抛出异常,影响程序的正常运行了)

再例如:alert(parseInt(null)); 这里打印出NaN 因为parseInt()函数是将一个字符串转换成一个数值。 因为null不能转换成数值,所以这里打印出NaN

但是除了0之外,其他的任何正数除以0返回的都是Infinity(正无穷大):例如 var box=12/0  alert(box)  打印出:Infinity

但是 var box=12/0*0  alert(box) 这有却又会打印出:NaN

我们可以通过Number.NaN 得到NaN 值,任何与NaN 进行运算的结果均为NaN,NaN 与自身不相等(NaN 不与任何值相等)。
alert(Number.NaN); //NaN
alert(NaN+1); //NaN
alert(NaN == NaN) //false

ECMAScript 提供了isNaN()函数,用来判断这个值到底是不是NaN。isNaN()函数在接收到一个值之后,会尝试将这个值转换为数值。

例如:

alert(isNaN(NaN));    //true
alert(isNaN(25));       //false,25 是一个数值
alert(isNaN('25'));      //false,'25'是一个字符串数值,可以转成数值
alert(isNaN('Lee'));    //true,'Lee'不能转换为数值
alert(isNaN(true));     //false true 可以转成成1



parsetInt() 函数是用于将字符串转换成数值。

alert(parsetInt('456Lee'));    //打印出:456,如果字符串以数字开头则会返回数字开头的连续整数部分,后面的字母及数字都会忽略掉
alert(parsetInt('Lee456Lee')); //打印出:NaN,如果第一个不是数值,就返回NaN
alert(parseInt('12Lee56Lee')); //打印出:12,如果字符串以数字开头则会返回数字开头的连续整数部分,后面的字母及数字都会忽略掉
alert(parseInt('56.12'));      //打印出:56,小数点不是数值,小数点及后面的数值都会被忽略掉
alert(parseInt(''));           //打印出:NaN,空返回NaN

自增符++

<script type="text/javascript">var box = 100var age = box++;   //++在box后面,就表示先赋值,后自增。即:先将100赋值给age,然后box自增alert(age); //打印出:100alert(box); //打印出:101var pox=100var age2 = ++pox; //++在pox前面,就表示先自增,后赋值。即:pox先自增后,然后将自增后的值赋值给age2alert(age2);  //打印出:101alert(pox);   //打印出:101
</script>

arguments(阿狗们特)

在JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性。arguments非常类似Array,但实际上又不是一个Array实例。可以通过如下代码得以证实(当然,实际上,在函数funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可)
<script type="text/javascript">function funSum() { //虽然这个函数我们没有定义参数,但是使用的时候,我们依然可以给它传递一个或多个参数。var sum = 0;for (var i = 0; i < arguments.length; i++) { //这个arguments对象,其实就是保存了 调用这个funSun函数的时候用户传递的可变参数。例如:用户传递了两个参数 1和2 那么就用arguments[0]和arguments[1]来接收sum = sum + arguments[i];}return sum;}function StrJoin() {var str = '';for (var i = 0; i < arguments.length; i++) {str = str +' | '+ arguments[i];}return str;}//求和var getSum = funSum(1, 2, 3);alert(getSum); // 输出:6//连接字符串var getStr = StrJoin("中国", '美国', '德国');alert(getStr); //输出:| 中国 | 美国 | 德国</script>

arguments对象中有一个非常有用的属性:callee。arguments.callee返回此arguments对象所在的当前函数引用。在使用函数递归调用时推荐使用arguments.callee代替函数名本身。

<script type="text/javascript">//实现一个阶乘的算法 5*4*3*2*1function sum(num) {if (num <= 1) {return 1;}else {return num * sum(num - 1); //此时这个sum会一直自调用(递归),知道num<=1}}var result = sum(5); alert(result); //输出:120//以上写法是没有问题的。 现在新的需求来了,我现在要将这个sum函数改个名字,改成abc 。改个函数的名字很容易。//虽然此时的sum函数中只有一个sum(sum-1)的自调用,我们改起来很容易,但是如果这个sum函数内部有很多很多个这样//的sum函数自调用,那么我们在将这个sum函数的名字修改成abc的时候,就需要同时将它里面所有的sum(num-1)自调用的//名字修改成abc(num - 1)。所以说,将一个sum修改成abc,很简单,但会将很多个sum修改成abc就比较麻烦了。//对于阶乘函数一般要用到递归算法,所以函数内部一定会调用自身;如果函数名不改变//是没有问题的,但一旦改变函数名,内部的自身调用需要逐一修改。为了解决这个问题,我//们可以使用arguments.callee 来代替。function sum1(num) {if (num <= 1) {return 1;}else {return num * arguments.callee(num - 1); //这里就用arguments.callee(num - 1)替代了sum1(num - 1)}}var result1 = sum1(5); alert(result1);</script>

Object对象

对象的声明

有以下三种形式
第一种:    var obj = new Object();
第二种:    var obj = Object();
第三种:    var obj = {};
   
第三种的封装写法   var obj = {name: "张三",age:28}
<script type="text/javascript">//对象包含哪些元素: 1.属性(字段)  2.方法(函数)var box = new Object(); //创建一个对象。 也可以简写成 var box= Object(); box.name = '张三'; //动态创建一个属性box.age = 27;  // 动态创建一个属性//或者用自变量的方式创建一个对象:例如:var pox = {};pox.name = "张三";pox.age = 27;pox.run = function () { return "123" };pox.obj = SetObj;alert(pox.run()); //打印出:123alert(pox.obj()); //打印出:456//也可以用字面两对象封装数据var mox = {name: '张三', //创建一个属性age: 27,Email: function () {return '123@163.com';},};alert(mox.name); //打印出:张三alert(mox.Email()); //输出:123@163.com//用字面两对象封装了数据除了上面的那种方式来取,还可以采用数组的方式来取属性或方法alert(mox['name']); //打印出:张三 function SetObj(){return"456";}</script>

JavaScript的编码和解码

PS: 因为encodeURIComponent()编码比encodeURI()编码来的更加彻底,一般来说encodeURIComponent()使用频率要高一些。
<script type="text/javascript">var box = '//Lee中国';var a = encodeURI(box); alert(a); //打印出:Lee%E4%B8%AD%E5%9B%BD   注意//Lee是没有编码的,只对中文的‘中国’进行了编码var b = encodeURIComponent(box); alert(b); //打印出:%2F%2FLee%E4%B8%AD%E5%9B%BD   注意:encodeURIComponent对双斜杠//也是进行了编码 (常用)alert(decodeURI(a)); //打印出://Lee中国alert(decodeURIComponent(b)); //打印出://Lee中国</script>

Function函数

函数的3种声明方式

<script type="text/javascript">//函数的声明方式:第一种:普通函数的声明方式function box(a, b) {  return a + b;}alert(box(1, 2)); //打印出:3//函数的声明方式:第二种:使用变量初始化的函数var pox = function (a, b) { return a + b;}alert(pox(5, 6));//打印出:11//函数的声明方式:第三种:使用nwe的构造函数来声明 (不推荐使用)var mox = new Function('a', 'b', 'return a+b');alert(mox('a4', 4)); //打印出 a44alert(mox('4', 5)); //打印出:9  (其实它在里面用eval()做了类型转换)</script>

将一个函数的返回值作为另外一个函数是参数传递,与将一个函数本身作为另外一个函数的参数传递的区别



<script type="text/javascript">function sum(num) {return num + 10;}function box(sum, num) {return sum + num;};var result = box(sum(10), 10); //此时这个sum(10) 就是sum这个函数的返回值。所以这里的sum(10)我们将它理解成一个数字,而不是一个函数alert(result); //打印出:30function pox(sum, num) {return sum(num) + num;}var result2 = pox(sum, 10); //此时这个sum是一个函数,是将一个函数当做参数传递到另外一个函数中alert(result2); //打印出:30
</script>

Window对象与this

window是一个对象,而且是Javascript中最大的对象,是最外围的对象  (window表示全局)
 函数内部另一个特殊对象是this,。PS:当在全局作用域中调用函数时,this 对象引用的就是window。
<script type="text/javascript">//window是一个对象,而且是Javascript中最大的对象,是最外围的对象  (window表示全局)//函数内部另一个特殊对象是this,。PS:当在全局作用域中调用函数时,this 对象引用的就是window。alert(window);  //打印出:[object Window]alert(this);    //打印出:[object Window]  说明,此时的this就是window对象。//注意:window是一个全局对象,在window下,所有的变量都是它的属性。var color = "红色的"; //这里的这个color就是一个全局变量。而这个变量又是window对象的一个属性alert(window.color);  //打印出:红色的    这就说明这个color的确是window对象的一个属性alert(this.color);    //打印出:红色的   window.color = "蓝色的"; //相当于 var color='红色的';var box = {color: "黄色的",  //这里的这个color是box对象下的属性,也就是局部变量。sayColor: function () {alert(this.color);  //此时这个this是在box这个对象下面,所有此时这个this表示box对象本身而不是最外面的window对象}}box.sayColor(); //打印出:黄色的</script>

例子2

<script type="text/javascript">window.color = "红色的";function sayColor() {alert(this.color);}sayColor(); //打印出:红色的  因为这个this是在window下,所以this表示的是window对象var box = {color: "蓝色的"};box.MyColor = sayColor; //此时sayColor函数中的this是box这个对象box.MyColor();   //打印出:蓝色的
</script>

函数的属性和方法

ECMAScript中函数是对象,因此函数也有属性和方法,每个函数都包含两个属性length和prototype 其中,length属性表示函数希望接收的命名参数的个数
<script type="text/javascript">function Add(name, age) {}alert(Add.length); //打印出:2    表示:Add这个函数有2个参数</script>

------javascript------N相关推荐

  1. 【AJAX】JavaScript的面向对象

    Ajax中后端数据返回后需要前端通过JavaScript来实现动态数据更新的问题.所以,在Ajax中加深了一遍JavaScript面向对象的印象. 基础部分: JavaScript中创建对象并简单对象 ...

  2. 【JavaScript总结】JavaScript语法基础:JS高级语法

    作用域链: 1.JS中只有函数能够限定作用域的范围: 2.变量处理在制定的函数范围内,还有一个特殊的作用域,就是没有用var 声明的全局作用域 3.js中的作用域链是为了清晰的表示出所有变量的作用范围 ...

  3. 【JavaScript总结】JavaScript语法基础:DOM

    ->DOM的理解:文档对应dom树 ->有了DOM能做什么:DOM的操作 html文档做为DOM树模型,DOM树的节点就是对象.对象会触发事件来执行一些事件代码. C#中的事件是一个委托变 ...

  4. 【JavaScript总结】JavaScript语法基础:JS编码

    运算符 数学:+. -. *. / 逻辑:>. < .>= .<=. == . !=.&&.|| . === .!==(完全等于) 对象相关 new delet ...

  5. 【JavaScript总结】JavaScript语法基础:数据类型

    ------>数据类型有哪些? ->基本类型:数字类型,布尔类型,字符串类型 ->引用类型:对象类型,函数类型 ->空类型:null 和 undefined ->运算符: ...

  6. 【JavaScript总结】JavaScript发展与学习内容

    发展: 最初浏览器是为大学里浏览文档用,从地址栏输入文档地址,找到文档显示. 后来各种需求(购物网站,个人博客)出现,已有功能不能满足需求. 可人们依旧在努力满足这种需求,但实现后的效果很不尽人意. ...

  7. Python:模拟登录、点击和执行 JavaScript 语句案例

    案例一:网站模拟登录 # douban.pyfrom selenium import webdriver from selenium.webdriver.common.keys import Keys ...

  8. [JavaScript] JavaScript数组挖掘,不只是讲数组哟(2)

    课程来源:后盾人 上一篇的内容:[JavaScript] JavaScript数组挖掘,不只是讲数组哟 数组引用类型分析,多维数组,用Array.of为数组创建细节,类型检测与转换,在一个数组后面加一 ...

  9. [JavaScript] JavaScript 数组挖掘,不只是讲数组哟

    课程来源:后盾人 数组引用类型分析 数组的定义 const array = new Array('hello', 'dust', 1, 2, 3, 4, 5) console.log(array) l ...

  10. linux下用js生成xml,js2xml:将javascript字符串转换为xml

    有时候爬数据遇到像下面这种,数据在script标签中以javascript形式存在. var totalReviewsValue = 32; var averageRating = 4.5; if(t ...

最新文章

  1. 第二十三周微职位elk日志系统
  2. 关于常见的底层驱动源码资料
  3. 【Python+selenium Wendriver API】之下拉框定位
  4. 《大道至简》阅读笔记二
  5. shell中的变量赋值
  6. 2013年,移动App设计的13大精髓
  7. python queue 模块教程
  8. delphi if多个条件_屡试不爽!使用策略模式代替多个if条件语句
  9. 数据库系统原理复习提纲
  10. 携程将推“3+2”工作模式:每周到岗3天,在家2天,你羡慕吗?
  11. E: Sub-process /usr/bin/dpkg returned an error code (1) Ubuntu安装apt-get命令报错
  12. Windows下的SQL Server备份文件BAK在Linux环境下还原遇到的问题
  13. CodeForces - 986E Prince's Problem
  14. 本地函数定义是非法的_使用函数计算三步实现深度学习 AI 推理在线服务
  15. 【学习】如何用jQuery获取iframe中的元素
  16. 珞珈一号影像辐射定标软件操作方法
  17. canvas arc() 方法绘制弧线、曲线、圆形,rect() 绘制矩形
  18. 扇贝编程python骗局-工作三年却被实习生抢了饭碗,学会Python到底有多吃香?
  19. matlab 计算均值,方差,标准差
  20. PCIE标准共享,以及其机械尺寸图

热门文章

  1. 转载:使用Spring进行数据访问(Data Access With Spring)
  2. imx6ull使用mjpg_stream调用摄像头,用opencv在windos进行视频查看
  3. java 重绘_java进度条重绘要怎么编写?
  4. 超级vga显示卡_VESA 编程介绍(一)标准VGA BIOS及超级VGA模式号
  5. RIQ编号,冲突处理
  6. Cassandra代替Redis?
  7. 物理实验-单摆测重力加速度 (仿真实验大厅) 实验报告 重庆理工大学
  8. State(状态模式)行为型
  9. 《解忧杂货铺》读书笔记
  10. 智能手机和平板的GPS精度测试