标签 JavaScript 下的文章

完全理解jQuery源代码,在前端行业算什么水平?
如何学习jQuery?
逐行分析 jQuery 源码的奥秘
逐行分析jQuery源码
jQuery源码解析(架构与依赖模块)
jQuery源码分析系列
jQuery1.6.1源码分析系列(停止更新)

https://github.com/mumuy/widget
A set of widgets based on jQuery&&javascript.
一套基于jquery或javascript的插件库 :

轮播、标签页、滚动条、下拉框、对话框、搜索提示、城市选择(城市三级联动)、日历等 

https://jquerywidget.com/

妙味课堂 jQuery集训营课程大纲

插件

jQuery插件开发模式
http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html
https://segmentfault.com/a/1190000007076651
jQuery One Page Nav

Owl Carousel 2 -支持触摸屏的响应式jQuery旋转木马插件
http://www.htmleaf.com/jQuery/Slideshow-Scroller/201502161387.html

动态加载无法绑定事件处理

$('body').on("input",'tags',function(e){});

动态添加事件后绑定此事件

让jquery:contains选择器 忽略大小写

使用前重写覆盖一下contains方法即可:

此处优化:contains不再区分大小写

jQuery.expr[':'].Contains = function(a, i, m) {
    return jQuery(a).text().toUpperCase()
    .indexOf(m[3].toUpperCase()) >= 0;
};
 
jQuery.expr[':'].contains = function(a, i, m) {
  return jQuery(a).text().toUpperCase()
  .indexOf(m[3].toUpperCase()) >= 0;
};

$("#statisticsViewList li").hide().find(".name").filter(":contains('"+name+"')").parents("li").show();

让jquery:contains选择器 忽略大小写
使用前重写覆盖一下contains方法即可:

<%--此处优化:contains不再区分大小写--%>

jQuery.expr[':'].Contains = function(a, i, m) { return jQuery(a).text().toUpperCase() .indexOf(m[3].toUpperCase()) >= 0; }; jQuery.expr[':'].contains = function(a, i, m) { return jQuery(a).text().toUpperCase() .indexOf(m[3].toUpperCase()) >= 0; };
$("#statisticsViewList li").hide().find(".name").filter(":contains('"+name+"')").parents("li").show();



防重复提交

怎样防止重复发送 Ajax 请求?

jQuery的 $.ajax防止重复提交的两种方法(推荐)
依赖jQ

$.ajax({
    type: 'POST',
    url: 'url',
    cache:false,
    dataType: 'json',
    data: {},
    async: false,
    beforeSend:function(){ 
        //触发ajax请求开始时执行
        //改变提交按钮上的文字并将按钮设置为不可点击
        //加判断条件,使得不能提交
    }, 
    success: function (msg, textStatus) 
    {
        //对上面的判断条件处理,使得能提交
    },
    error: function (textStatus) 
    {
        
    },
    complete: function(msg, textStatus)
    { 
    
    } 
});

Prefilters是一个预过滤器,在每个请求之前被发送和$.ajax()处理它们前处理。
options 是请求的选项
originalOptions 值作为提供给Ajax方法未经修改的选项,因此,没有ajaxSettings设置中的默认值
jqXHR 是请求的jqXHR对象
以上内容的核心思想是维护一个队列,发送请求时,将请求加入队列,请求响应后,从队列中清除,这就保证了在任一时刻只能有一个同样的请求发送.
局限性:仅仅是前台防止jQuery的ajax请求。对于非jquery的ajax请求,不起作用。因为使用的是jquery的ajaxPreFilter函数,仅仅对jquery的ajax请求有作用。
2)按钮每次点击都会向后端发送请求,下面的demo实现了多次点击按钮之后,只保证最后一次点击的请求能够成功。

var pendingRequests = {};
jQuery.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
    var key = options.url;
    console.log(key);
    if (!pendingRequests[key]) {
    pendingRequests[key] = jqXHR;
    }else{
    //jqXHR.abort(); //放弃后触发的提交
    pendingRequests[key].abort(); // 放弃先触发的提交
    }
    var complete = options.complete;
    options.complete = function(jqXHR, textStatus) {
    pendingRequests[key] = null;
    if (jQuery.isFunction(complete)) {
    complete.apply(this, arguments);
    }
    };
});


请输入图片描述
以上图来自这里
各位程序猿们,如果你觉得老板 10 天要你们上线一个 App 是一个丧心病狂的事情,
那么可以多想想这位哥。
Youtube 上有位哥的采访,你可以听听大神当年的故事。
https://www.youtube.com/watch?v=IPxQ9kEaF8c
当然,码农和大神的区别在于:遇到这种事情,10 天以后码农死掉了,而大神成功了。
只是但凡这种极速上线的事情,都会留下一堆的坑,大神和码农的的区别,也就是水洼和天坑的区别。

作者:罗志宇
链接:https://www.zhihu.com/question/31415286/answer/58022648
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

js混淆

https://javascriptobfuscator.herokuapp.com/
http://www.jsfuck.com/
移动时代的前端加密
从零开始的webpack生活-0x004:js压缩混淆
https://www.v2ex.com/t/381946
https://www.v2ex.com/t/392624
https://www.v2ex.com/t/363167

JavaScript

前端程序员经常忽视的一个JavaScript的面试试题
妙味课堂 JS 实战开发课程大纲
JavaScript (脚本之家)
JavaScript教程 (廖雪峰)
React.js-demo (阮一峰)(GitHub)
webpack-demos (阮一峰)
react-babel-webpack-boilerplate (阮一峰)
ECMAScript的兼容 && 兼容包
ECMAScript5.1中文版 + ECMAScript3 + ECMAScript(合集) && 英文版
30分钟掌握ES6/ES2015核心内容(上)
30分钟掌握ES6/ES2015核心内容(下)
ECMAScript 6 入门 (阮一峰)(GitHub)
ES6 全套教程 ECMAScript6 (原著:阮一峰)
JavaScript 标准参考教程(alpha) (阮一峰)(GitHub) 新地址 https://wangdoc.com/
悟透JavaScript
原生态纯JavaScript 100大技巧大收集
前端日常:JavaScript验证
JS实战实例教程
前端代码异常日志收集与监控
stylus中文版参考文档之综述
JavaScript深入系列(15篇)、JavaScript专题系列、ES6系列、React系列
Awesome JavaScript

递归

js 递归、非递归生成树
https://www.cnblogs.com/ygunoil/p/12524806.html

浮点型数据使用注意事项
JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。

所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定:
var x = 0.1;
var y = 0.2;
var z = x + y // z 的结果为 0.3
if (z == 0.3) // 返回 false
为解决以上问题,可以用整数的乘除法来解决:
var z = (x 10 + y 10) / 10; // z 的结果为 0.3

不推荐使用 TAB 键来缩进,因为不同编辑器 TAB 键的解析不一样。

关于js三元表达式,多个判断条件的写法
以两个判断条件为例,直接上代码:

var a = 3;
var b = a === 1 ? '是1' : (a === 2 ? '是2' : '不是1也不是2')
console.log(b); //不是1也不是2

Bridge

https://github.com/wendux/DSBridge-Android
https://github.com/wendux/DSBridge-IOS
原生与 JS 交互,里面有demo 例子

模块化规范

js模块化编程之彻底弄懂CommonJS和AMD/CMD!
CommonJS、requirejs、ES6的对比
Js apply call方法 详解
javascript 六种数据类型(一)
10 个技巧,让你更专业地使用 console 进行 JS 调试
High performance JavaScript templating engine

零碎

从谷歌的JavaScript编写风格中,13 点值得我们注意的! && google jsguide
不会Object.defineProperty你就out了 && MDN

聊聊函数节流(throttle)和函数去抖(debounce)

https://unpkg.com/browse/vue@2.6.10/
https://cdn.jsdelivr.net/npm/vue/
在 unpkg 和 cdnjs 上获取

https://github.com/lodash/lodash/ && 中文文档地址 && 中文文档2
https://www.npmjs.com/package/ramda && 中文
Lodash,你正在使用的JavaScript库
轻量高效的开源JavaScript插件和库

http://www.freejs.net/

节流 (throttle) 让一个函数不要执行的太频繁,减少执行过快的调用,叫节流
去抖 (debounce) 去抖就是对于一定时间段的连续的函数调用,只让其执行一次
https://segmentfault.com/a/1190000025137536
防抖与节流 ,优化

屏蔽F12

<script type="text/javascript">
window.onload = function() {
    document.onkeydown = function() {
       var e = window.event || arguments[0];
       //屏蔽F12
       if(e.keyCode == 123) {
           return false;
           //屏蔽Ctrl+Shift+I
       } else if((e.ctrlKey) && (e.shiftKey) && (e.keyCode == 73)) {
           return false;
         //屏蔽Ctrl+Shift+J
       } else if((e.ctrlKey) && (e.shiftKey) && (e.keyCode == 74)) {
           return false;
           //屏蔽Shift+F10
       } else if((e.shiftKey) && (e.keyCode == 121)){
           return false;
       } else if(event.ctrlKey  &&  window.event.keyCode==83 ){
           return false;
       }
   };
   //屏蔽右键单击
   document.oncontextmenu = function() {
       return false;
   }

   //debugger
   var hasDebugger = false;
    var start = new Date();
    try {
    // 新建一个匿名函数,这样 debugger 得不到任何信息
        (function() {}).constructor('debugger')()
        if (new Date() - start > 200) {
            hasDebugger = true;
            window.close(); //关闭当前窗口(防抽)
            window.location="about:blank"; //将当前窗口跳转置空白页
        }
    } catch(e) {
        //alert(hasDebugger)
        window.close(); //关闭当前窗口(防抽)
        window.location="about:blank"; //将当前窗口跳转置空白页
    }
}
</script>

语言排名

排名

总结

EventUtil——跨浏览器的事件对象
JavaScript 的 this 原理
JS前端开发联盟群
javascript学习思维导图(收藏)
[转] js async await 终极异步解决方案

显示多少帧
https://www.testufo.com/

const showFPS = (function () {

// noinspection JSUnresolvedVariable, SpellCheckingInspection
const requestAnimationFrame =

window.requestAnimationFrame || // Chromium window.webkitRequestAnimationFrame || // Webkit window.mozRequestAnimationFrame || // Mozilla Geko window.oRequestAnimationFrame || // Opera Presto window.msRequestAnimationFrame || // IE Trident? function (callback) { // Fallback function window.setTimeout(callback, 1000 / 60); };
let dialog;
let container;
let fps = 0;
let lastTime = Date.now();
function setStyle(el, styles) {

for (const key in styles) { el.style[key] = styles[key]; }
}

function init() {

dialog = document.createElement('dialog'); setStyle(dialog, { display: 'block', border: 'none', backgroundColor: 'rgba(0, 0, 0, 0.6)', margin: 0, padding: '4px', position: 'fixed', top: 0, right: 'auto,', bottom: 'auto', left: 0, color: '#fff', fontSize: '12px', textAlign: 'center', borderRadius: '0 0 4px 0' }); container.appendChild(dialog);
}

function calcFPS() {

let offset = Date.now() - lastTime; fps += 1; if (offset >= 1000) { lastTime += offset; displayFPS(fps); fps = 0; } requestAnimationFrame(calcFPS);
}

function displayFPS(fps) {

const fpsStr = `${fps} FPS`; if (!dialog) { init(); } if (fpsStr !== dialog.textContent) { dialog.textContent = fpsStr; }
}
return function (parent) {

container = parent; calcFPS();
};
}());
showFPS(document.body);


<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title></title>
  <link rel="stylesheet" href="">
  <script src="jquery.js"></script>
</head>
<body>
  <table class="list" style="width:100%;">
        <tbody><tr>
          <th style="width: 20%; min-width: 168px; max-width: 192px;">审核用户</th>
          <th style="width: 20%; min-width: 120px; max-width: 144px;">审核结果</th>
          <th style="width: 20%; min-width: 120px; max-width: 144px;">审核日期</th>
          <th style="width:60%">相关说明</th>
        </tr>
        </tbody><tbody oddclass="list-odd" evenclass="list-even" hoverclass="list-hover" class="shsjvalidation">
          
            <tr>
              <td style="min-width: 168px; max-width: 192px;">
                葛大爷
              </td>
              <td style="min-width: 120px; max-width: 144px;">
                审核中
              </td>
              <td style="min-width: 120px; max-width: 144px;">2017-06-02</td>
              <td style="white-space: inherit; overflow: inherit; text-overflow: inherit;">
                
              </td>
            </tr>
          
            <tr>
              <td style="min-width: 168px; max-width: 192px;">
                a的上级
              </td>
              <td style="min-width: 120px; max-width: 144px;">
                同意
              </td>
              <td style="min-width: 120px; max-width: 144px;">2017-06-02</td>
              <td style="white-space: inherit; overflow: inherit; text-overflow: inherit;">
                
              </td>
            </tr>
          
        </tbody>
      </table>
<script>
    str="审核中";
    var reg = /审核中/ig;
    var shstr = $(".shsjvalidation tr td:nth-child(2)").text();
    console.log(shstr);
    var newshsjstr = $(".shsjvalidation tr td:nth-child(3)").text();
    console.log(newshsjstr);
    $('.shsjvalidation tr td:nth-child(2)').each(function(index){
    // console.log("这是第"+index+"个: "+$(this).html());
    console.log($(this).html());
    if($(this).html().match(str)){
      // alert("ok");
      $(this).next("td").css("background-color","yellow");
      // $('.shsjvalidation tr td:nth-child(2)').css("background-color","yellow");
    }
    })
    
  </script>
</body>
</html>

自行添加jq文件


公鸡5/只,母鸡3/只,小鸡2/只,100可以买100只鸡
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>JS之for循环实现"百钱买百鸡"</title>
    <link rel="stylesheet" href="">
    <script>
        for(var i=0;i<=20;i++){
            for(var j=0;j<=33;j++){
                for(var z=0;z<=100;z++){
                    if((i+j+z==100)&&(5*i+3*j+z/3==100)){
                        document.write('公鸡有'+i+"只;"+"母鸡有"+j+"只;"+"小鸡有"+z+"只"+"<br>");
                    }
                }
            }
        }
    </script>
</head>
<body>
</body>
</html>

两个for

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>JS之for循环实现"百钱买百鸡"</title>
    <link rel="stylesheet" href="">
    <script>
        for(var i=0;i<=20;i++){
            for(var j=0;j<=33;j++){
                z=100-i-j;
                    if((z%3==0)&&(5*i+3*j+z/3==100)){
                        document.write('公鸡有'+i+"只;"+"母鸡有"+j+"只;"+"小鸡有"+z+"只"+"<br>");
                    }
            }
        }
    </script>
</head>
<body>
</body>
</html>

奇数

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>1-100之间的奇数和</title>
    <link rel="stylesheet" href="">
    <script>
        var sum=0;
        for(var i=1;i<=100;i++){
            if(i%2==1){
                sum+=i;//sum=sum+i;
            }
        }
        document.write('1-100之间的奇数和为:'+sum);
    </script>
</head>
<body>
</body>
</html>

偶数

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>1-100之间的偶数和</title>
    <link rel="stylesheet" href="">
    <script>
        var sum=0;
        for(var i=1;i<=100;i++){
            if(i%2==0){
                sum+=i;
            }
        }
        document.write('1-100之间的偶数和为:'+sum);
    </script>
</head>
<body>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>九九乘法表</title>
    <link rel="stylesheet" href="">
    <script>
        document.write('<table border="1" ccellpadding="0" ccellpadding="0" bgcolor="#ABCDEF" width="80%">');
            for(var i=1;i<=9;++i){
                document.write('<tr>');
                    for(var j=1;j<=i;j++){
                        document.write('<td>'+i+'x'+j+'='+(i*j)+'</td>');
                    }
                document.write('</tr>');
            }
        document.write('</table>');
    </script>
</head>
<body>
</body>
</html>

倒九九乘法表

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>1-100之间的奇数和</title>
    <link rel="stylesheet" href="">
    <script>
        document.write('<table border="1" ccellpadding="0" ccellpadding="0" bgcolor="#ABCDEF" width="80%">');
            for(var i=9;i>=1;i--){
                document.write('<tr>');
                    for(var j=1;j<=i;j++){
                        document.write('<td>'+i+'x'+j+'='+(i*j)+'</td>');
                    }
                document.write('</tr>');
            }
        document.write('</table>');
    </script>
</head>
<body>
</body>
</html>

思路:

1.创建一个新的数组存放结果
2.创建一个空对象
3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。
说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。
Array.prototype.unique3 = function(){
 var res = [];
 var json = {};
 for(var i = 0; i < this.length; i++){
  if(!json[this[i]]){
   res.push(this[i]);
   json[this[i]] = 1;
  }
 }
 return res;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
alert(arr.unique3());

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>js出现次数最多的是</title>
    <link rel="stylesheet" href="">
    <script>
        var str='asdhdsaaaadasds';
        var json={};

        for (var i = 0; i < str.length; i++) {
                if(!json[str.charAt(i)]){
                        json[str.charAt(i)] = 1;
                }else{
                        json[str.charAt(i)]++;
                }
        };
        var iMax = 0;
        var iIndex = '';
        for(var i in json){
                if(json[i]>iMax){
                        iMax = json[i];
                        iIndex = i;
                }
        }
        alert('出现次数最多的是:'+iIndex+'出现'+iMax+'次');
    </script>
</head>
<body>
    asdhdsaaaadasds
</body>
</html>

在JavaScript中,一共有两种类型的值,原始值和对象值.每个对象都有一个内部属性[[prototype]],我们通常称之为原型.原型的值可以是一个对象,也可以是null.如果它的值是一个对象,则这个对象也一定有自己的原型.这样就形成了一条线性的链,我们称之为原型链.



Math对象中所有的属性和方法都是静态的,没有构造函数,所以不能用Math()来定义一个Math对象,可以直接使用Math对象提供的属性和方法

Math对象的属性

属性名说明
constructor对创建此对象的函数的引用
E自然对数的底数,常数e,其值近似为2.718
LN1010的自然对数,其值近似为2.302
LN22的自然对数,其值近似为0.693
LOG10E以10为底的e的对数,其值近似为0.434
LOG2E以2为底的对数,其值近似为1.442
PI常量π,其值近似为3.141159
prototype向对象添加自定义的属性和方法
SQRT1_21c除以2的平方根,其值近似为0.707
SQRT22的平方根,其值其值近似为1.414

Math对象的方法

方法名说明
abs()返回x的绝对值
acos(x)返回x的反余弦值,参数x的有效值范围为-1.0~1.0。如果超过该范围则返回NaN
asin(x)返回x的反正弦值,参数x的有效值范围为-1.0~1.0。如果超过该范围则返回NaN,否则返回-π/2~π/2之间的弧度值
atan(x)返回x反正切值。返回值为-π/2~π/2之间的弧度值
atan2(y,x)返回从一个点(x,y)与X轴之间的角度,参数x和y分别为X坐标和Y坐标,返回值为-π~π之间的值
ceil(x)向上舍入,即返回大于或等于x并且与x最接近的整数
cos(x)返回x的余弦值。返回值为-1.0~1.0之间的值
exp(x)返回ex,其中e为自然对数的底数
floor(x)向上舍入,即返回小于或等于x并且与x最接近的整数
log(x)返回x的自然对数。参数x为大于0的书,如果x为负数,则返回NAN
max(value1,value2...)返回参数中最大的值,如果没有参数,返回-Infinity。如果有一个参数为NaN,或有一个不能转换成数字的参数,返回NAN
min(value1,value2...)返回参数中最小的值,如果没有参数,返回-Infinity。如果有一个参数为NaN,或有一个不能转换成数字的参数,返回NAN
pow(x,y)返回xy,如果xy的结果虚数或复数,Math.pow()将返回NaN,如果xy的结果过大,可能会返回Infinity
random()返回一个0~1之间的随机数
round(x)舍入到最近的整数,返回与x最近的整数
sin(x)返回x的正弦值。返回值为-1.0~10的值
sqrt(x)返回x的平方根。如果x为负数,返回NaN
tan(x)返回x的正切值

Array是一个有序的数据集合
在JavaScript中定义数组的方法有三种
1.使用数组直接量来定义
2.使用数组对象的Array()来构造函数来定义
3.使用其他对象中的方法,如使用String对象中的split()方法来返回一个数组

1.使用数组直接量
数组名=[element1,element2,element3,...]

2.使用构造函数
数组名=new Array();
数组名=new Array(length);
数组名=new Array(element1,element2,element3,...);
数组名=Array();
数组名=Array(length);
数组名=Array(element1,element2,element3,...);

3.使用String对象的split()方法
String对象的split()方法可以将一个字符串分隔成一个数组
StringObj.split(separator.limit)
StringObj是String的对象,separator是字符串或正则表达式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>数组元素排列</title>
    <link rel="stylesheet" href="">
    <script>
    //定义用于升序排列的函数
    function asc(x,y){
        if(x>y){
            return 1;
        }
        else if(x<y){
            return -1;
        }
        else{
            return 0;
        }
    }
    //定义用于降序排列的函数
    function desc(x,y){
        if(x>y){
            return -1;
        }
        else if(x<y){
            return 1;
        }
        else{
            return 0;
        }
    }
    //定义一个数组
    var arr=new Array(5,29,14,656,206,41,3,159);
    document.write("原数组中的元素为:"+arr.toString()+"<br>");
    //将数组元素升序排列
    arr.sort(asc);
    document.write("数组元素升序排列后为:"+arr.toString()+"<br>");
    ////将数组元素降序排列
    arr.sort(desc);
    document.write("数组元素降序排列后为:"+arr.toString()+"<br>");
    </script>
</head>
<body>
    
</body>
</html>

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Match的对象实例</title>
    <link rel="stylesheet" href="">
    <script>
    var m=parseInt(prompt("请输入随机数的下限","0"));
    var n=parseInt(prompt("请输入随机数的上限","0"));
    with(document){
        //Math的属性和方法
        write("Math.E="+Math.E+"<br>");
        write("Math.LN2="+Math.LN2+"<br>");
        write("Math.LN10="+Math.LN10+"<br>");
        write("Math.LOG2E="+Math.LOG2E+"<br>");
        write("Math.LOG10E="+Math.LOG10E+"<br>");
        write("Math.PI="+Math.PI+"<br>");
        write("Math.SQRT1_2="+Math.SQRT1_2+"<br>");
        write("Math.SQRT2="+Math.SQRT2+"<hr>");
        //使用log方法计算自然数
        write("Math.log("+n+"):"+Math.log(n)+"<br>");
        write("Math.log("+m+"):"+Math.log(m)+"<br>");
        write("Math.log(Math.exp("+m+")):"+Math.log(Math.exp(m))+"<hr>");
        //使用sqrt方法计算平方根
        write("Math.sqrt("+m+"):"+Math.sqrt(m)+"<br>");
        write("Math.sqrt("+n+"):"+Math.sqrt(n)+"<hr>");
        //在for循环中使用random方法产生10个随机数
        document.write(m+"到"+n+"之间的随机数为:<br>");
        for(var i=0;i<10;i++){
            var reasult=Math.round(Math.random()*(n-m)+m);
            document.write(reasult+",");
        }
    }
    </script>
</head>
<body>
    
</body>
</html>