zoukankan      html  css  js  c++  java
  • 面试常考的js题目(一)

    1、找出dom文档中某个元素下面的所有文字(面试写的一塌糊涂,回来重写的)
    • 1、返回回数组形式的
    function getText(ele) {
    	if (ele.nodeType === 3) {
    		return ele.data.replace(/[s]/g, '');
    	}
    	var result = [];
    	var childNodes = ele.childNodes;
    	for (var i = 0; i < childNodes.length; i++) {
    		if (childNodes[i].nodeType === 3) {
    			// result += childNodes[i].data.replace(/[s]/g, '');
    			result=result.concat(childNodes[i].data.replace(/[s]/g, ''));
    		} else if (childNodes[i].nodeType === 1) {
    			// result += getText(childNodes[i]);
    			result=result.concat(getText(childNodes[i]));
    		}
    	}
    	console.log(result);
    	return result;
    }
    var elem = document.getElementById('text');
    getText(elem)
    
    • 2直接返回字符串的 (面试要求是字符串)
    function getText(ele){
        if (ele.nodeType === 3) {
        return ele.data.replace(/[s]/g, '');
        }
        var result='';
        var childNodes = ele.childNodes;
        for(var i=0;i<childNodes.length;i++){
            if(childNodes[i].nodeType===3){
            result += childNodes[i].data.replace(/[s]/g, '');
            }else if(childNodes[i].nodeType === 1){
            result += getText(childNodes[i]);
            }
        }
        console.log(result);
        return result;
        // console.log(ele.childNodes)
        // console.log(childNodes[0].data.replace(/[s]/g,''))
    }
    
    2、实现一个add函数要求add(1)(2)(3)返回6。 注意扩展。(函数的柯里化)
    • 1、比较标准的实现
    function add () {
        var args = [].slice.call(arguments);
    
        var fn = function () {
            var arg_fn = [].slice.call(arguments);
            console.log(args.concat(arg_fn))   ; 
            return add.apply(null, args.concat(arg_fn));
        }
    
        fn.valueOf = function() {
            return args.reduce((a, b) => a + b);
        }
        return fn;
    }
    add(1)(2)(3)
    
    
    • 2、利用闭包 返回值为函数 重要的一点是函数的valueOf 方法
    function add(a){
        var sum=a;
        var result = function(b){
    
            sum+=b;
            console.log(sum)
            return arguments.callee;
        }
        
        result.valueOf = function(){
            return sum;
        }
        return result;
        
    }
    add(1)(3)(2)
    

    注意:
    以上代码中的重写函数的 valueOf 方法或者 toString 方法,在某些时候是会自己调用的,还牵扯到了类型转换。如果没有valueOf,return 的结果就是一个函数,得不到具体的值。

    Object.prototype.valueOf()
    valueOf() 方法返回指定对象的原始值。

    JavaScript 调用 valueOf() 方法用来把对象转换成原始类型的值(数值、字符串和布尔值)。但是我们很少需要自己调用此函数,valueOf 方法一般都会被 JavaScript 自动调用。

    Object.prototype.toString()
    toString() 返回一个表示该对象的字符串。

    每个对象都有一个 toString() 方法,当对象被表示为文本值时或者当以期望字符串的方式引用对象时,该方法被自动调用。

    valueOf() 和 toString() 在特定的场合下会自行调用。

    原始类型
    javascript 的几种原始类型,除去 Object 和 Symbol,有如下几种原始类型:

    Number
    String
    Boolean
    Undefined
    Null
    在 JavaScript 进行对比或者各种运算的时候会把对象转换成这些类型,从而进行后续的操作。

  • 相关阅读:
    Analysis Services features supported by SQL Server editions
    Azure DevOps to Azure AppServices
    Power BI For Competition
    Win10开机“提示语音”以及”随机播放音乐”
    Azure DevOps
    Allow Only Ajax Requests For An Action In ASP.NET Core
    Mobile CI/CD 101
    Configure SSL for SharePoint 2013
    AWS Step Function Serverless Applications
    Cordova Upload Images using File Transfer Plugin and .Net core WebAPI
  • 原文地址:https://www.cnblogs.com/csuwujing/p/9772815.html
Copyright © 2011-2022 走看看